use of io.automatiko.engine.workflow.base.core.Work in project automatiko-engine by automatiko-io.
the class ServerlessWorkflowFactory method humanTaskNode.
public HumanTaskNode humanTaskNode(long id, String name, FunctionDefinition function, ExecutableProcess process, NodeContainer nodeContainer) {
// then the ht node
HumanTaskNode humanTaskNode = new HumanTaskNode();
humanTaskNode.setId(id);
humanTaskNode.setName(name);
Work work = new WorkImpl();
work.setName("Human Task");
humanTaskNode.setWork(work);
work.setParameter("NodeName", name);
humanTaskNode.addInMapping(DEFAULT_WORKFLOW_VAR, DEFAULT_WORKFLOW_VAR);
nodeContainer.addNode(humanTaskNode);
return humanTaskNode;
}
use of io.automatiko.engine.workflow.base.core.Work in project automatiko-engine by automatiko-io.
the class ServerlessWorkflowFactory method serviceNode.
public WorkItemNode serviceNode(long id, Action action, FunctionDefinition function, NodeContainer nodeContainer) {
String actionName = action.getName();
String[] operationParts = function.getOperation().split("#");
String interfaceStr = operationParts[0];
String operationStr = operationParts[1];
WorkItemNode workItemNode = new WorkItemNode();
workItemNode.setId(id);
workItemNode.setName(actionName);
workItemNode.setMetaData(UNIQUE_ID_PARAM, Long.toString(id));
workItemNode.setMetaData("Type", SERVICE_TASK_TYPE);
workItemNode.setMetaData("Implementation", "##WebService");
Work work = new WorkImpl();
workItemNode.setWork(work);
work.setName(SERVICE_TASK_TYPE);
work.setParameter("Interface", interfaceStr);
work.setParameter("Operation", operationStr);
work.setParameter("interfaceImplementationRef", interfaceStr);
work.setParameter("implementation", "##WebService");
JsonNode params = action.getFunctionRef().getArguments();
String inputFilter = null;
String outputFilter = null;
String scopeFilter = null;
if (action.getActionDataFilter() != null) {
inputFilter = unwrapExpression(action.getActionDataFilter().getFromStateData());
outputFilter = unwrapExpression(action.getActionDataFilter().getResults());
scopeFilter = unwrapExpression(action.getActionDataFilter().getToStateData());
}
Set<String> paramNames = new LinkedHashSet<>();
if (params != null) {
Iterator<String> it = params.fieldNames();
while (it.hasNext()) {
String name = it.next();
String value = params.get(name).toString();
work.setParameter(name, unwrapExpression(value));
paramNames.add(name);
work.addParameterDefinition(new ParameterDefinitionImpl(name, new JsonNodeDataType()));
}
} else {
work.setParameter("ParameterType", JSON_NODE);
}
Assignment assignment = new Assignment("jq", null, null);
assignment.setMetaData("Action", new TaskInputJqAssignmentAction(inputFilter, paramNames));
workItemNode.addInAssociation(new DataAssociation(Collections.emptyList(), "", Arrays.asList(assignment), null));
Assignment outAssignment = new Assignment("jq", null, null);
outAssignment.setMetaData("Action", new TaskOutputJqAssignmentAction(outputFilter, scopeFilter));
workItemNode.addOutAssociation(new DataAssociation(Collections.emptyList(), "", Arrays.asList(outAssignment), null));
nodeContainer.addNode(workItemNode);
return workItemNode;
}
use of io.automatiko.engine.workflow.base.core.Work in project automatiko-engine by automatiko-io.
the class WorkItemNodeVisitor method visitNode.
@Override
public void visitNode(WorkflowProcess process, String factoryField, T node, BlockStmt body, VariableScope variableScope, ProcessMetaData metadata) {
Work work = node.getWork();
String workName = node.getWork().getName();
if (workName.equals("Service Task")) {
ServiceTaskDescriptor d = new ServiceTaskDescriptor(process, node, contextClassLoader);
String mangledName = d.mangledName();
metadata.getGeneratedHandlers().put(mangledName, d);
workName = mangledName;
if (d.openapi() != null) {
metadata.addOpenAPI(d.openapi());
}
}
body.addStatement(getAssignedFactoryMethod(factoryField, WorkItemNodeFactory.class, getNodeId(node), getNodeKey(), new LongLiteralExpr(node.getId()))).addStatement(getNameMethod(node, work.getName())).addStatement(getFactoryMethod(getNodeId(node), METHOD_WORK_NAME, new StringLiteralExpr(workName)));
addWorkItemParameters(work, body, getNodeId(node));
addNodeMappings(process, node, body, getNodeId(node));
body.addStatement(getDoneMethod(getNodeId(node)));
visitMetaData(node.getMetaData(), body, getNodeId(node));
metadata.getWorkItems().add(workName);
}
use of io.automatiko.engine.workflow.base.core.Work in project automatiko-engine by automatiko-io.
the class WorkItemNodeFactory method workName.
public WorkItemNodeFactory workName(String name) {
Work work = getWorkItemNode().getWork();
if (work == null) {
work = new WorkImpl();
getWorkItemNode().setWork(work);
}
work.setName(name);
return this;
}
use of io.automatiko.engine.workflow.base.core.Work in project automatiko-engine by automatiko-io.
the class HumanTaskNodeFactory method skippable.
public HumanTaskNodeFactory skippable(boolean skippable) {
Work work = getHumanTaskNode().getWork();
if (work == null) {
work = new WorkImpl();
getHumanTaskNode().setWork(work);
}
work.setParameter(WORK_SKIPPABLE, Boolean.toString(skippable));
return this;
}
Aggregations