【发布时间】:2013-04-24 07:17:11
【问题描述】:
如何在 JBPM 中设置/修改正在运行的流程实例的流程实例变量? 是否有任何预定义的命令类来设置流程实例变量?
我可以看到一些命令,例如org.drools.command.SetVariableCommandFromLastReturn &&
org.drools.command.SetVariableCommandFromCommand
我可以使用这些命令吗?这个命令怎么用?
【问题讨论】:
如何在 JBPM 中设置/修改正在运行的流程实例的流程实例变量? 是否有任何预定义的命令类来设置流程实例变量?
我可以看到一些命令,例如org.drools.command.SetVariableCommandFromLastReturn &&
org.drools.command.SetVariableCommandFromCommand
我可以使用这些命令吗?这个命令怎么用?
【问题讨论】:
到目前为止,我正在使用 GenericCommand 更新这样的变量。
kSession.execute(new GenericCommand<Boolean>() {
public Boolean execute(Context context) {
//Get session in the command context
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
//Get the process instance
ProcessInstance processInstance = (ProcessInstance) ksession.getProcessInstance(processInstanceId);
//Get variable scoprts
VariableScopeInstance variableScope = (VariableScopeInstance) processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
Iterator<String> piStateItr=piStateVariables.keySet().iterator();
//Modify required variables
while(piStateItr.hasNext()){
String variableName=piStateItr.next();
String variableValue=piStateVariables.get(variableName);
logger.debug(">>> Setting State - key "+variableName +" , to "+variableValue );
variableScope.setVariable(variableName, variableValue);
}
return true;
}
});
【讨论】:
processInstanceId 变量?