JBoss Community

Re: Query the workflow process definition

created by Chris Melas in jBPM - View the full discussion

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.

Reply to this message by going to Community

Start a new discussion in jBPM at Community