use of org.jbpm.workflow.core.node.SubProcessNode in project jbpm by kiegroup.
the class ServicesProcessDataEventListener method onNodeAdded.
@SuppressWarnings("unchecked")
@Override
public void onNodeAdded(Node node) {
logger.debug("Added node " + node);
if (node instanceof HumanTaskNode) {
HumanTaskNode humanTaskNode = (HumanTaskNode) node;
String name = humanTaskNode.getName();
UserTaskDefinitionImpl task = (UserTaskDefinitionImpl) processDescriptor.getTasks().get(name);
if (task == null) {
task = new UserTaskDefinitionImpl();
task.setId(humanTaskNode.getUniqueId());
task.setName(name);
processDescriptor.getTasks().put(task.getName(), task);
}
Map<String, Object> parameters = humanTaskNode.getWork().getParameters();
Collection<String> currentAssignment = processDescriptor.getTaskAssignments().get(humanTaskNode.getName());
for (String parameter : parameters.keySet()) {
if (parameter.equals("GroupId") || parameter.equals("ActorId")) {
if (currentAssignment == null) {
currentAssignment = new ArrayList<String>();
processDescriptor.getTaskAssignments().put(humanTaskNode.getName(), currentAssignment);
}
currentAssignment.add(humanTaskNode.getWork().getParameter(parameter).toString());
}
}
((UserTaskDefinitionImpl) processDescriptor.getTasks().get(humanTaskNode.getName())).setAssociatedEntities(currentAssignment);
Map<String, String> inputParams = new HashMap<String, String>();
for (Map.Entry<String, String> in : ((Map<String, String>) humanTaskNode.getMetaData("DataInputs")).entrySet()) {
inputParams.put(in.getKey(), in.getValue());
}
Map<String, String> outputParams = new HashMap<String, String>();
for (Map.Entry<String, String> out : ((Map<String, String>) humanTaskNode.getMetaData("DataOutputs")).entrySet()) {
outputParams.put(out.getKey(), out.getValue());
}
task.setTaskInputMappings(inputParams);
task.setTaskOutputMappings(outputParams);
task.setComment(asString(humanTaskNode.getWork().getParameter("Comment")));
task.setCreatedBy(asString(humanTaskNode.getWork().getParameter("CreatedBy")));
task.setPriority(asInt(humanTaskNode.getWork().getParameter("Priority")));
task.setSkippable(asBoolean(humanTaskNode.getWork().getParameter("Skippable")));
task.setFormName(asString(humanTaskNode.getWork().getParameter("TaskName")));
processDescriptor.getTaskInputMappings().put(task.getName(), inputParams);
processDescriptor.getTaskOutputMappings().put(task.getName(), outputParams);
} else if (node instanceof RuleSetNode) {
RuleSetNode ruleSetNode = (RuleSetNode) node;
String ruleFlowGroup = ruleSetNode.getRuleFlowGroup();
if (ruleFlowGroup != null) {
processDescriptor.getReferencedRules().add(ruleFlowGroup);
}
} else if (node instanceof WorkItemNode) {
processDescriptor.getServiceTasks().put(node.getName(), ((WorkItemNode) node).getWork().getName());
} else if (node instanceof SubProcessNode) {
SubProcessNode subProcess = (SubProcessNode) node;
String processId = subProcess.getProcessId();
if (subProcess.getProcessName() != null) {
processDescriptor.addReusableSubProcessName(subProcess.getProcessName());
} else {
processDescriptor.getReusableSubProcesses().add(processId);
}
}
}
use of org.jbpm.workflow.core.node.SubProcessNode in project jbpm by kiegroup.
the class SingleSessionCommandServiceTest method getProcessSubProcess.
private InternalKnowledgePackage getProcessSubProcess() {
RuleFlowProcess process = new RuleFlowProcess();
process.setId("org.drools.test.TestProcess");
process.setName("TestProcess");
process.setPackageName("org.drools.test");
StartNode start = new StartNode();
start.setId(1);
start.setName("Start");
process.addNode(start);
ActionNode actionNode = new ActionNode();
actionNode.setId(2);
actionNode.setName("Action");
DroolsConsequenceAction action = new DroolsConsequenceAction();
action.setDialect("java");
action.setConsequence("System.out.println(\"Executed action\");");
actionNode.setAction(action);
process.addNode(actionNode);
new ConnectionImpl(start, Node.CONNECTION_DEFAULT_TYPE, actionNode, Node.CONNECTION_DEFAULT_TYPE);
SubProcessNode subProcessNode = new SubProcessNode();
subProcessNode.setId(3);
subProcessNode.setName("SubProcess");
subProcessNode.setProcessId("org.drools.test.SubProcess");
process.addNode(subProcessNode);
new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, subProcessNode, Node.CONNECTION_DEFAULT_TYPE);
EndNode end = new EndNode();
end.setId(4);
end.setName("End");
process.addNode(end);
new ConnectionImpl(subProcessNode, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
KnowledgeBuilderImpl packageBuilder = new KnowledgeBuilderImpl();
ProcessBuilderImpl processBuilder = new ProcessBuilderImpl(packageBuilder);
processBuilder.buildProcess(process, null);
process = new RuleFlowProcess();
process.setId("org.drools.test.SubProcess");
process.setName("SubProcess");
process.setPackageName("org.drools.test");
start = new StartNode();
start.setId(1);
start.setName("Start");
process.addNode(start);
actionNode = new ActionNode();
actionNode.setId(2);
actionNode.setName("Action");
action = new DroolsConsequenceAction();
action.setDialect("java");
action.setConsequence("System.out.println(\"Executed action\");");
actionNode.setAction(action);
process.addNode(actionNode);
new ConnectionImpl(start, Node.CONNECTION_DEFAULT_TYPE, actionNode, Node.CONNECTION_DEFAULT_TYPE);
WorkItemNode workItemNode = new WorkItemNode();
workItemNode.setId(3);
workItemNode.setName("WorkItem1");
Work work = new WorkImpl();
work.setName("MyWork");
workItemNode.setWork(work);
process.addNode(workItemNode);
new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, workItemNode, Node.CONNECTION_DEFAULT_TYPE);
end = new EndNode();
end.setId(6);
end.setName("End");
process.addNode(end);
new ConnectionImpl(workItemNode, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
processBuilder.buildProcess(process, null);
return packageBuilder.getPackage("org.drools.test");
}
Aggregations