我有一个代码,我在进程中插入一些参数(Jbpm),然后启动进程,我还添加一个EventListener(它将DefaultProcessEventListener扩展到知识会话)
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Map<String, Object> input = new HashMap<String, Object>();
input.put("payload", payloadObject);
input.put("caseNo", caseNoString);
EventListner listner = new EventListner();
ksession.addEventListener(listner);
ksession.startProcess(strategyName,input);
现在我想要Listner类中的输入映射
public class EventListner extends DefaultProcessEventListener{
@Override
public void afterProcessStarted(ProcessStartedEvent startEvent) {
//NEEDED HERE
}
@Override
public void afterProcessCompleted(ProcessCompletedEvent arg0) {
//NEEDED HERE
}
...如何???需要帮助
答案 0 :(得分:0)
我刚刚碰巧正在研究同样的问题。这是我工作的代码
public void afterNodeLeft(ProcessNodeLeftEvent event) {
RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance)event.getProcessInstance();
RuleFlowProcess rfp = rfpi.getRuleFlowProcess();
VariableScope scope = rfp.getVariableScope();
for(Variable var : scope.getVariables()) {
Object obj = rfpi.getVariable(var.getName());
String value = null;
if (obj != null) {
value = obj.toString();
}
System.out.printf("\tVariable name: %s, Value: %s%n",var.getName(),value);
}
}
我发现如果您尝试直接通过进程访问变量,结果始终为null。通过ProcessInstance访问流程变量似乎有效。