Step 1: Provide a Case Owner Assignment Strategy Implementation

The code snippet below demonstrates a sample implementation for PDCCaseOwnerAssignmentStrategy, it simply sets the owner to be the system user.

@Singleton
public class SampleCaseOwnerAssignmentStrategyImpl 
  implements PDCCaseOwnerAssignmentStrategy {

  public void createOwner(CaseHeaderKey key, OrgObjectLinkDtls ownerDtls)
    throws AppException, InformationalException {

    ownerDtls.orgObjectType = ORGOBJECTTYPE.USER;
    ownerDtls.userName = UserAccessFactory.newInstance().getSystemUserDetails().userName;
    
    OrgObjectLinkFactory.newInstance().insert(ownerDtls);
    
    OrgObjectLinkKey orgObjectLinkKey = new OrgObjectLinkKey();
    orgObjectLinkKey.orgObjectLinkID = ownerDtls.orgObjectLinkID;
    
    CaseUserRoleDtls caseUserRoleDtls = new CaseUserRoleDtls();
    caseUserRoleDtls.caseID = key.caseID;
    caseUserRoleDtls.orgObjectLinkID = orgObjectLinkKey.orgObjectLinkID;
    caseUserRoleDtls.typeCode = CASEUSERROLETYPE.OWNER;
    caseUserRoleDtls.recordStatus = RECORDSTATUS.NORMAL;
    
    curam.core.sl.entity.fact.CaseUserRoleFactory.newInstance().insert(caseUserRoleDtls);
   
    CaseHeader caseHeaderObj = CaseHeaderFactory.newInstance();    
    CaseHeaderDtls caseHeaderDtls = caseHeaderObj.read(key);
    caseHeaderDtls.ownerOrgObjectLinkID = orgObjectLinkKey.orgObjectLinkID;
    caseHeaderObj.modify(key, caseHeaderDtls);    
  }
}