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