use of io.automatiko.engine.workflow.bpmn2.core.Interface.Operation in project jbpm by kiegroup.
the class DefinitionsHandler method postProcessInterfaces.
private void postProcessInterfaces(NodeContainer nodeContainer, List<Interface> interfaces) {
for (Node node : nodeContainer.getNodes()) {
if (node instanceof NodeContainer) {
postProcessInterfaces((NodeContainer) node, interfaces);
}
if (node instanceof WorkItemNode && "Service Task".equals(((WorkItemNode) node).getMetaData("Type"))) {
WorkItemNode workItemNode = (WorkItemNode) node;
if (interfaces == null) {
throw new IllegalArgumentException("No interfaces found");
}
String operationRef = (String) workItemNode.getMetaData("OperationRef");
String implementation = (String) workItemNode.getMetaData("Implementation");
Operation operation = null;
for (Interface i : interfaces) {
operation = i.getOperation(operationRef);
if (operation != null) {
break;
}
}
if (operation == null) {
throw new IllegalArgumentException("Could not find operation " + operationRef);
}
// avoid overriding parameters set by data input associations
if (workItemNode.getWork().getParameter("Interface") == null) {
workItemNode.getWork().setParameter("Interface", operation.getInterface().getName());
}
if (workItemNode.getWork().getParameter("Operation") == null) {
workItemNode.getWork().setParameter("Operation", operation.getName());
}
if (workItemNode.getWork().getParameter("ParameterType") == null) {
workItemNode.getWork().setParameter("ParameterType", operation.getMessage().getType());
}
// parameters to support web service invocation
if (implementation != null) {
workItemNode.getWork().setParameter("interfaceImplementationRef", operation.getInterface().getImplementationRef());
workItemNode.getWork().setParameter("operationImplementationRef", operation.getImplementationRef());
workItemNode.getWork().setParameter("implementation", implementation);
}
}
}
}
use of io.automatiko.engine.workflow.bpmn2.core.Interface.Operation in project jbpm by kiegroup.
the class OperationHandler method start.
public Object start(final String uri, final String localName, final Attributes attrs, final ExtensibleXmlParser parser) throws SAXException {
parser.startElementBuilder(localName, attrs);
String id = attrs.getValue("id");
String name = attrs.getValue("name");
String implRef = attrs.getValue("implementationRef");
Interface i = (Interface) parser.getParent();
Operation operation = i.addOperation(id, name);
if (implRef != null) {
operation.setImplementationRef(implRef);
}
return operation;
}
use of io.automatiko.engine.workflow.bpmn2.core.Interface.Operation in project kogito-runtimes by kiegroup.
the class ServiceTaskHandler method handleNode.
@SuppressWarnings("unchecked")
protected Node handleNode(final Node node, final Element element, final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
Node currentNode = super.handleNode(node, element, uri, localName, parser);
WorkItemNode workItemNode = (WorkItemNode) node;
String operationRef = element.getAttribute("operationRef");
String implementation = element.getAttribute("implementation");
List<Interface> interfaces = (List<Interface>) ((ProcessBuildData) parser.getData()).getMetaData("Interfaces");
workItemNode.setMetaData("OperationRef", operationRef);
workItemNode.setMetaData("Implementation", implementation);
workItemNode.setMetaData("Type", "Service Task");
if (interfaces != null) {
Operation operation = null;
for (Interface i : interfaces) {
operation = i.getOperation(operationRef);
if (operation != null) {
break;
}
}
if (operation == null) {
throw new ProcessParsingValidationException("Could not find operation " + operationRef);
}
// avoid overriding parameters set by data input associations
if (workItemNode.getWork().getParameter("Interface") == null) {
String interfaceRef = operation.getInterface().getImplementationRef();
workItemNode.getWork().setParameter("Interface", interfaceRef != null && !interfaceRef.isEmpty() ? interfaceRef : operation.getInterface().getName());
}
if (workItemNode.getWork().getParameter("Operation") == null) {
workItemNode.getWork().setParameter("Operation", operation.getName());
}
if (workItemNode.getWork().getParameter("ParameterType") == null && operation.getMessage() != null) {
workItemNode.getWork().setParameter("ParameterType", operation.getMessage().getType());
}
// parameters to support web service invocation
if (implementation != null) {
workItemNode.getWork().setParameter("interfaceImplementationRef", operation.getInterface().getImplementationRef());
workItemNode.getWork().setParameter("operationImplementationRef", operation.getImplementationRef());
workItemNode.getWork().setParameter("implementation", implementation);
}
}
return currentNode;
}
use of io.automatiko.engine.workflow.bpmn2.core.Interface.Operation in project automatiko-engine by automatiko-io.
the class InMessageRefHandler method end.
@SuppressWarnings("unchecked")
public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
Element element = parser.endElementBuilder();
String messageId = element.getTextContent();
Map<String, Message> messages = (Map<String, Message>) ((ProcessBuildData) parser.getData()).getMetaData("Messages");
if (messages == null) {
throw new IllegalArgumentException("No messages found");
}
Operation operation = (Operation) parser.getParent();
Message message = messages.get(messageId);
if (message != null) {
operation.setMessage(message);
}
return parser.getCurrent();
}
use of io.automatiko.engine.workflow.bpmn2.core.Interface.Operation in project automatiko-engine by automatiko-io.
the class ServiceTaskHandler method handleNode.
@SuppressWarnings("unchecked")
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);
WorkItemNode workItemNode = (WorkItemNode) node;
String operationRef = element.getAttribute("operationRef");
String implementation = element.getAttribute("implementation");
List<Interface> interfaces = (List<Interface>) ((ProcessBuildData) parser.getData()).getMetaData("Interfaces");
workItemNode.setMetaData("OperationRef", operationRef);
workItemNode.setMetaData("Implementation", implementation);
workItemNode.setMetaData("Type", "Service Task");
if (interfaces != null) {
// throw new IllegalArgumentException("No interfaces found");
Operation operation = null;
for (Interface i : interfaces) {
operation = i.getOperation(operationRef);
if (operation != null) {
break;
}
}
if (operation == null) {
throw new IllegalArgumentException("Could not find operation " + operationRef);
}
// avoid overriding parameters set by data input associations
if (workItemNode.getWork().getParameter("Interface") == null) {
String interfaceRef = operation.getInterface().getImplementationRef();
workItemNode.getWork().setParameter("Interface", interfaceRef != null && !interfaceRef.isEmpty() ? interfaceRef : operation.getInterface().getName());
}
if (workItemNode.getWork().getParameter("Operation") == null) {
workItemNode.getWork().setParameter("Operation", operation.getName());
}
if (workItemNode.getWork().getParameter("ParameterType") == null && operation.getMessage() != null) {
workItemNode.getWork().setParameter("ParameterType", operation.getMessage().getType());
}
// parameters to support web service invocation
if (implementation != null) {
workItemNode.getWork().setParameter("interfaceImplementationRef", operation.getInterface().getImplementationRef());
workItemNode.getWork().setParameter("operationImplementationRef", operation.getImplementationRef());
workItemNode.getWork().setParameter("implementation", implementation);
}
}
}
Aggregations