JBoss Community

Re: setActorID for Swimlane in JBPM5

created by Maciej Swiderski in jBPM - View the full discussion

just gave it a try on master, here is a test case that uses swimlanes and I added following code to check and change actorId on the swimlane and it worked fine, it was saved. To give that  atry on that test case just replace line 56 with this code

 

 

     ksession.execute(new GenericCommand<Void>(){
            public Void execute(Context context){
                KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
                ProcessInstance pi = ksession.getProcessInstance(processInstance.getId());
 
                WorkflowProcessInstance wfpi = (WorkflowProcessInstance)pi;
                SwimlaneContextInstance slci = (SwimlaneContextInstance)wfpi.getContextInstance(SwimlaneContext.SWIMLANE_SCOPE);
        
                SwimlaneContext sc = slci.getSwimlaneContext();
        
                Swimlane sl = sc.getSwimlane("MyLane");
                System.out.println("Before: Current actor id is " + sl.getActorId());
                return null;
            }});
        
        GenericCommand<Void> genericCommand = new GenericCommand<Void>(){
            public Void execute(Context context){
                KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
                ProcessInstance pi = ksession.getProcessInstance(processInstance.getId());
 
                WorkflowProcessInstance wfpi = (WorkflowProcessInstance)pi;
                SwimlaneContextInstance slci = (SwimlaneContextInstance)wfpi.getContextInstance(SwimlaneContext.SWIMLANE_SCOPE);
        
                SwimlaneContext sc = slci.getSwimlaneContext();
        
                Swimlane sl = sc.getSwimlane("MyLane");
                System.out.println("Command: Current actor id is " + sl.getActorId());
                sl.setActorId("mary");
                
                return null;
            }
        };
        ksession.execute(genericCommand);
        // simulating a system restart
        ksession = restoreSession(ksession, true);
        
        ksession.execute(new GenericCommand<Void>(){
            public Void execute(Context context){
                KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
                ProcessInstance pi = ksession.getProcessInstance(processInstance.getId());
 
                WorkflowProcessInstance wfpi = (WorkflowProcessInstance)pi;
                SwimlaneContextInstance slci = (SwimlaneContextInstance)wfpi.getContextInstance(SwimlaneContext.SWIMLANE_SCOPE);
        
                SwimlaneContext sc = slci.getSwimlaneContext();
        
                Swimlane sl = sc.getSwimlane("MyLane");
                System.out.println("After: Current actor id is " + sl.getActorId());
                return null;
            }});
 

HTH

Reply to this message by going to Community

Start a new discussion in jBPM at Community