2013-06-02 4 views
0

BPM에서 사용자의 휴가 규칙을 만들려고 할 때 jaxb 객체 인스턴스가 생성 될 때 예외가 발생했지만 (snipper는 아래에서 볼 수 있습니다) 작성했습니다.adf 플랫폼을 사용하여 Oracle BPM에서 bpm 휴가 규칙을 만드는 방법은 무엇입니까?

ruleInfoType.setCreatedDate(DateUtility.getCalendarInTimeZone(DateUtility.TIMEZONE_TR)); 

java.lang.NullPointerException 
at oracle.xml.jaxb.JaxbNode.getOwnerDocument(JaxbNode.java:244) 
at oracle.xml.jaxb.JaxbNode.setJaxbElement(JaxbNode.java:789) 
at oracle.bpel.services.workflow.user.model.RuleInfoTypeImpl.setCreatedDate(RuleInfoTypeImpl.java:181) 
at com.arsivist.structure.integration.bpm.BPMProcessUtility.createVacationRule(BPMProcessUtility.java:488) 
at com.arsivist.structure.integration.bpm.BPMRoleManagementService.main(BPMRoleManagementService.java:101) 

.

import com.arsivist.structure.integration.bpm.vo.DefaultColumnList; 
import com.arsivist.structure.util.DateUtility; 

import java.lang.reflect.Method; 

import java.util.Date; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import oracle.bpel.services.bpm.common.IBPMContext; 
import oracle.bpel.services.common.util.XMLUtil; 
import oracle.bpel.services.workflow.WorkflowException; 
import oracle.bpel.services.workflow.client.IWorkflowServiceClient; 
import oracle.bpel.services.workflow.client.config.ClientConfigurationUtil; 
import oracle.bpel.services.workflow.client.config.WorkflowServicesClientConfigurationType; 
import oracle.bpel.services.workflow.common.model.PrincipleRefType; 
import oracle.bpel.services.workflow.common.model.PrincipleRefTypeImpl; 
import oracle.bpel.services.workflow.query.ITaskQueryService; 
import oracle.bpel.services.workflow.repos.Column; 
import oracle.bpel.services.workflow.repos.Predicate; 
import oracle.bpel.services.workflow.repos.TableConstants; 
import oracle.bpel.services.workflow.runtimeconfig.model.AttributeLabelType; 
import oracle.bpel.services.workflow.runtimeconfig.model.PayloadMappingType; 
import oracle.bpel.services.workflow.task.model.ProcessType; 
import oracle.bpel.services.workflow.task.model.Task; 
import oracle.bpel.services.workflow.user.IUserMetadataService; 
import oracle.bpel.services.workflow.user.model.RuleActionType; 
import oracle.bpel.services.workflow.user.model.RuleActionTypeImpl; 
import oracle.bpel.services.workflow.user.model.RuleAssignmentType; 
import oracle.bpel.services.workflow.user.model.RuleAssignmentTypeImpl; 
import oracle.bpel.services.workflow.user.model.RuleDetail; 
import oracle.bpel.services.workflow.user.model.RuleDetailType; 
import oracle.bpel.services.workflow.user.model.RuleDetailTypeImpl; 
import oracle.bpel.services.workflow.user.model.RuleInfoType; 
import oracle.bpel.services.workflow.user.model.RuleInfoTypeImpl; 
import oracle.bpel.services.workflow.verification.IWorkflowContext; 

import oracle.bpm.client.BPMServiceClientFactory; 
import oracle.bpm.services.client.IBPMServiceClient; 
import oracle.bpm.services.instancemanagement.model.IProcessFlexAttributes; 
import oracle.bpm.services.instancemanagement.model.IProcessInstance; 
import oracle.bpm.services.instancequery.IInstanceQueryService; 
import oracle.bpm.services.processmetadata.IProcessMetadataService; 
import oracle.bpm.services.processmetadata.ProcessMetadataSummary; 
import oracle.bpm.services.processmetadata.StatusEnum; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
// ACTIVE/RETIRED/DELETED 
/** 
* Utility class with example usage of the BPM and HWF APIs 
*/ 
public class BPMProcessUtility 
{ 

public final static String PAYLOAD_ELEMENT = "payload"; 
public final static String TASK_NS = "http://www.acme.com.tr"; 
public final static String INIT_TASK_SUBMIT_OUTCOME = "SUBMIT"; 

private IBPMServiceClient bpmSvcClient_; 
private IWorkflowServiceClient wfSvcClient_; 
private Map<Column, Method> protectedFlexFieldMapping_; 

public BPMProcessUtility(BPMServiceClientFactory clientFactory) 
{ 
bpmSvcClient_ = clientFactory.getBPMServiceClient(); 
wfSvcClient_ = clientFactory.getWorkflowServiceClient(); 
protectedFlexFieldMapping_ = initializeFlexFieldMethodMapping("getProtected"); 
} 

public void createVacationRule(IWorkflowContext ctx, String userNameOfRuleOwner, String targetUserName, Date beginDate, Date endDate, 
oracle.bpm.services.organization.model.ObjectFactory objectFactory) throws Exception 
{ 
IUserMetadataService iUserMetadataService = wfSvcClient_.getUserMetadataService(); 
RuleInfoType ruleInfoType = new RuleInfoTypeImpl(); 
RuleDetailType ruleDetail = new RuleDetailTypeImpl(); 
RuleActionType action = new RuleActionTypeImpl(); 
RuleAssignmentType ruleAssignment = new RuleAssignmentTypeImpl(); 

//prepare ruleinfotype instance 
ruleInfoType.setCreatedDate(DateUtility.getCalendarInTimeZone(DateUtility.TIMEZONE_TR)); 
ruleInfoType.setDescription(userNameOfRuleOwner + "_" + DateUtility.convertDateToString(DateUtility.getToday(), "dd.MM.yyyy HH:mi")); 
ruleInfoType.setStartDate(DateUtility.getCalendarOfDate(beginDate)); 
ruleInfoType.setEndDate(DateUtility.getCalendarOfDate(endDate)); 
ruleInfoType.setRuleName(userNameOfRuleOwner + "_" + DateUtility.convertDateToString(DateUtility.getToday(), "dd.MM.yyyy HH:mi")); 

//prepare owneruser principalref 
PrincipleRefType userOfRuleOwner = new PrincipleRefTypeImpl(); 
userOfRuleOwner.setRealm("jazn.com"); 
userOfRuleOwner.setName(userNameOfRuleOwner); 

//set owner user to ruleInfoType 
ruleInfoType.setOwner(userOfRuleOwner); 
ruleDetail.setGeneralInfo(ruleInfoType); 

//prepare targetuser principalref 
PrincipleRefType targetUser = new PrincipleRefTypeImpl(); 
targetUser.setRealm("jazn.com"); 
targetUser.setName(targetUserName); 

//set target user to reassigne user 
ruleAssignment.setAssignee(targetUser); 

action.setReassign(ruleAssignment); 

iUserMetadataService.createRule(ctx, (RuleDetail)ruleDetail); 
} 

인스턴스를 만드는 올바른 방법에 대한 아이디어가 있습니까?

+0

이 질문에 많은 작업을해야합니다. 핵심 질문으로, 정확히 무엇이 잘못되었는지, 무엇을 시도했는지 등등. – thecoshman

답변

0

BPM API 객체를 설정하는 동안 objectFactory를 사용하지 않는 문제가 발생했습니다. 나는 oracle.bpel.services.workflow.user.model.ObjectFactory를 사용했고, 아래 코드가 도움이 되었으면 좋겠다.

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);