use of io.automatiko.engine.workflow.process.core.node.HumanTaskNode in project automatiko-engine by automatiko-io.
the class ProcessToExecModelGenerator method generateUserTaskModel.
public List<UserTaskModelMetaData> generateUserTaskModel(WorkflowProcess process, boolean templateSupported) {
String packageName = process.getPackageName();
List<UserTaskModelMetaData> usertaskModels = new ArrayList<>();
VariableScope variableScope = (VariableScope) ((io.automatiko.engine.workflow.base.core.Process) process).getDefaultContext(VariableScope.VARIABLE_SCOPE);
for (Node node : ((WorkflowProcessImpl) process).getNodesRecursively()) {
if (node instanceof HumanTaskNode) {
HumanTaskNode humanTaskNode = (HumanTaskNode) node;
VariableScope nodeVariableScope = (VariableScope) ((ContextContainer) humanTaskNode.getParentContainer()).getDefaultContext(VariableScope.VARIABLE_SCOPE);
if (nodeVariableScope == null) {
nodeVariableScope = variableScope;
}
usertaskModels.add(new UserTaskModelMetaData(packageName, variableScope, nodeVariableScope, humanTaskNode, process.getId(), ModelMetaData.version(process.getVersion()), templateSupported));
}
}
return usertaskModels;
}
use of io.automatiko.engine.workflow.process.core.node.HumanTaskNode in project automatiko-engine by automatiko-io.
the class HumanTaskNodeHandler method visitParameters.
protected void visitParameters(WorkItemNode workItemNode, StringBuilder xmlDump) {
super.visitParameters(workItemNode, xmlDump);
HumanTaskNode humanTaskNode = (HumanTaskNode) workItemNode;
String swimlane = humanTaskNode.getSwimlane();
if (swimlane != null) {
xmlDump.append("swimlane=\"" + swimlane + "\" ");
}
}
use of io.automatiko.engine.workflow.process.core.node.HumanTaskNode in project automatiko-engine by automatiko-io.
the class ProcessHandler method assignLanes.
private void assignLanes(NodeContainer nodeContainer, Map<String, String> laneMapping) {
for (Node node : nodeContainer.getNodes()) {
String lane = null;
String uniqueId = (String) node.getMetaData().get("UniqueId");
if (uniqueId != null) {
lane = laneMapping.get(uniqueId);
} else {
lane = laneMapping.get(XmlBPMNProcessDumper.getUniqueNodeId(node));
}
if (lane != null) {
((NodeImpl) node).setMetaData("Lane", lane);
if (node instanceof HumanTaskNode) {
((HumanTaskNode) node).setSwimlane(lane);
}
}
if (node instanceof NodeContainer) {
assignLanes((NodeContainer) node, laneMapping);
}
}
}
use of io.automatiko.engine.workflow.process.core.node.HumanTaskNode in project automatiko-engine by automatiko-io.
the class UserTaskHandler method handleNode.
protected void handleNode(final Node node, final Element element, final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
super.handleNode(node, element, uri, localName, parser);
HumanTaskNode humanTaskNode = (HumanTaskNode) node;
Work work = humanTaskNode.getWork();
work.setName("Human Task");
ProcessBuildData buildData = (ProcessBuildData) parser.getData();
Map<String, Resource> resources = (Map<String, Resource>) buildData.getMetaData("Resources");
Map<String, String> dataInputs = new HashMap<String, String>();
Map<String, String> dataOutputs = new HashMap<String, String>();
List<String> owners = new ArrayList<String>();
org.w3c.dom.Node xmlNode = element.getFirstChild();
while (xmlNode != null) {
String nodeName = xmlNode.getNodeName();
// ioSpec and data{Input,Output}Spec handled in super.handleNode(...)
if ("potentialOwner".equals(nodeName)) {
String owner = readPotentialOwner(xmlNode, humanTaskNode);
if (owner != null) {
owners.add(owner);
}
} else if ("performer".equals(nodeName)) {
org.w3c.dom.Node resourceNode = xmlNode.getFirstChild();
if (resourceNode != null) {
String resourceId = resourceNode.getTextContent();
if (resources.containsKey(resourceId)) {
owners.add(resources.get(resourceId).getName());
}
}
}
xmlNode = xmlNode.getNextSibling();
}
if (owners.size() > 0) {
String owner = owners.get(0);
for (int i = 1; i < owners.size(); i++) {
owner += "," + owners.get(i);
}
humanTaskNode.getWork().setParameter("ActorId", owner);
}
humanTaskNode.getWork().setParameter("NodeName", humanTaskNode.getName());
}
Aggregations