new ConnectionImpl(
subProcessNode, Node.CONNECTION_DEFAULT_TYPE,
endNode, Node.CONNECTION_DEFAULT_TYPE
);
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
process = new RuleFlowProcess();
process.setId("org.drools.process.subprocess");
process.setName("SubProcess");
startNode = new StartNode();
startNode.setName("Start");
startNode.setId(1);
process.addNode(startNode);
endNode = new EndNode();
endNode.setName("EndNode");
endNode.setId(2);
process.addNode(endNode);
ActionNode actionNode = new ActionNode();
actionNode.setName("Action");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
public void execute(ProcessContext context) throws Exception {
System.out.println("Executed action");
executed = true;
}
});
actionNode.setAction(action);
process.addNode(actionNode);
new ConnectionImpl(
startNode, Node.CONNECTION_DEFAULT_TYPE,
actionNode, Node.CONNECTION_DEFAULT_TYPE
);
new ConnectionImpl(
actionNode, Node.CONNECTION_DEFAULT_TYPE,
endNode, Node.CONNECTION_DEFAULT_TYPE
);
((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ksession.startProcess("org.drools.process.process");
assertTrue(executed);
assertEquals(0, ksession.getProcessInstances().size());
}