use of io.serverlessworkflow.api.actions.Action in project automatiko-engine by automatiko-io.
the class ServerlessWorkflowFactory method expressionActionStateNode.
public ActionNode expressionActionStateNode(long id, String name, NodeContainer nodeContainer, String expression, Action action) {
ActionNode actionNode = new ActionNode();
actionNode.setId(id);
actionNode.setName(name);
ActionDataFilter actionDataFilter = action.getActionDataFilter();
StringBuilder functionArguments = new StringBuilder();
if (action.getFunctionRef().getArguments() != null) {
functionArguments.append("(");
for (JsonNode argument : action.getFunctionRef().getArguments()) {
functionArguments.append(unwrapExpression(argument.toString())).append(",");
}
functionArguments.deleteCharAt(functionArguments.length() - 1);
functionArguments.append(")");
}
String inputFilter = actionDataFilter == null ? null : unwrapExpression(actionDataFilter.getFromStateData());
String outputFilter = actionDataFilter == null ? null : unwrapExpression(actionDataFilter.getResults());
String scopeFilter = actionDataFilter == null ? null : unwrapExpression(actionDataFilter.getToStateData());
ConsequenceAction processAction = new ConsequenceAction(null, "expression(context, " + escapeExpression(expression + functionArguments) + ", " + escapeExpression(inputFilter) + ");");
if (actionDataFilter != null && actionDataFilter.isUseResults()) {
processAction = new ConsequenceAction(null, "expression(context, " + escapeExpression(expression + functionArguments) + ", " + escapeExpression(inputFilter) + ", " + escapeExpression(outputFilter) + ", " + escapeExpression(scopeFilter) + ");");
}
io.automatiko.engine.workflow.base.instance.impl.Action injectAction = context -> {
if (actionDataFilter != null && actionDataFilter.isUseResults()) {
io.automatiko.engine.workflow.sw.ServerlessFunctions.expression(context, expression, inputFilter, outputFilter, scopeFilter);
} else {
io.automatiko.engine.workflow.sw.ServerlessFunctions.expression(context, expression, inputFilter);
}
};
processAction.setMetaData(ACTION, injectAction);
actionNode.setAction(processAction);
nodeContainer.addNode(actionNode);
return actionNode;
}
use of io.serverlessworkflow.api.actions.Action in project automatiko-engine by automatiko-io.
the class ServerlessWorkflowFactory method injectStateNode.
public ActionNode injectStateNode(long id, String name, NodeContainer nodeContainer, String dataToInject) {
ActionNode actionNode = new ActionNode();
actionNode.setId(id);
actionNode.setName(name);
ConsequenceAction processAction = new ConsequenceAction(null, "inject(context, " + escapeExpression(dataToInject) + ");");
io.automatiko.engine.workflow.base.instance.impl.Action injectAction = context -> {
io.automatiko.engine.workflow.sw.ServerlessFunctions.inject(context, dataToInject);
};
processAction.setMetaData(ACTION, injectAction);
actionNode.setAction(processAction);
nodeContainer.addNode(actionNode);
return actionNode;
}
Aggregations