Problem which occured while setting BPM API objects was about not using objectFactory. I used oracle.bpel.services.workflow.user.model.ObjectFactory and it worked, hope code snippet below helps.
public static void createVacationRule(String userNameOfRuleOwner, String targetUserName, Date beginDate, Date endDate) throws WorkflowException
{
IUserMetadataService iUserMetadataService = serviceClientFactory.getWorkflowServiceClient().getUserMetadataService();
oracle.bpel.services.workflow.user.model.ObjectFactory userObjectFactory = new oracle.bpel.services.workflow.user.model.ObjectFactory();
RuleInfoType ruleInfoType = userObjectFactory.createRuleInfoType();
//RuleDetailType ruleDetailType = objectFactory.createRuleDetailType();
RuleDetail ruleDetail = userObjectFactory.createRuleDetail();
RuleActionType ruleActionType = userObjectFactory.createRuleActionType();
RuleAssignmentType ruleAssignment = userObjectFactory.createRuleAssignmentType();
StringBuilder ruleName = new StringBuilder("VekaletApp_");
StringBuilder ruleDesc = new StringBuilder(userNameOfRuleOwner);
//prepere ruleName Str
ruleName.append(userNameOfRuleOwner);
ruleName.append("_");
ruleName.append(targetUserName);
ruleName.append("_");
ruleName.append(DateUtility.convertDateToString(beginDate, "dd.MM.yyyy"));
ruleName.append("_");
ruleName.append(DateUtility.convertDateToString(endDate, "dd.MM.yyyy"));
//prepere ruleDesc Str
ruleDesc.append("'s reassignment rule between ");
ruleDesc.append(DateUtility.convertDateToString(beginDate, "dd.MM.yyyy HH:mm"));
ruleDesc.append(" and ");
ruleDesc.append(DateUtility.convertDateToString(endDate, "dd.MM.yyyy HH:mm"));
//prepare ruleinfotype instance
ruleInfoType.setRuleName(ruleName.toString());
ruleInfoType.setDescription(ruleDesc.toString());
ruleInfoType.setCreatedDate(DateUtility.getCalendarInTimeZone(DateUtility.TIMEZONE_TR));
ruleInfoType.setStartDate(DateUtility.getCalendarOfDate(beginDate));
ruleInfoType.setEndDate(DateUtility.getCalendarOfDate(endDate));
//prepare owneruser principalref
oracle.bpel.services.workflow.common.model.PrincipleRefType userOfRuleOwner = userObjectFactory.createViewGranteeType();
userOfRuleOwner.setRealm("jazn.com");
userOfRuleOwner.setType("USER");
userOfRuleOwner.setName(userNameOfRuleOwner);
//set owner user to ruleInfoType
ruleInfoType.setOwner(userOfRuleOwner);
//prepare targetuser principalref
oracle.bpel.services.workflow.common.model.PrincipleRefType targetUser = userObjectFactory.createViewGranteeType();
targetUser.setRealm("jazn.com");
targetUser.setType("USER");
targetUser.setName(targetUserName);
//set target user to reassigne user
ruleAssignment.setAssignee(targetUser);
}
ruleActionType.setReassign(ruleAssignment);
ruleActionType.setActionType(IUserMetadataService.RULE_ACTION_REASSIGN);
ruleDetail.setAction(ruleActionType);
ruleDetail.setGeneralInfo(ruleInfoType);
iUserMetadataService.createRule(iWorkFlowContext, ruleDetail);