Hello,
You can get any node you like
i.e.
WorkflowProcess workFlowProcess = ((WorkflowProcess) knowledgeBase.getProcess("yourProcessId"));
nodes = workFlowProcess.getNodes();
then you can loop and cast to whatever node you want look at the types in package org.jbpm.workflow.core.node i.e. there is a HumanTaskNode etc
i.e. finding the start node
Node startNode = null;
for (Node node : nodes) {
if (node instanceof StartNode) {
startNode = node;
}
}
you can even traverse your process
i.e. call the following method as traverseProcessForHumanTaskNodes(startNode, new ArrayList<Node>()); then it will return a collection with all the human task nodes
public static Collection traverseProcessForHumanTaskNodes(Node startNode, Collection<Node> nodes) {
/*you can choose on of your outgoing connections based on some logic*/
Node nextNode = startNode.getOutgoingConnections("DROOLS_DEFAULT").get(0).getTo();
if (nextNode instanceof HumanTaskNode) {
nodes.add(nextNode);
} else if (nextNode instanceof EndNode) {
return nodes;
}
return traverseProcessForHumanTaskNodes(nextNode, nodes);
}
This is just to get you starting.... with a little debugging you will see that everything is connected and you can easily retrieve it.