Search in sources :

Example 1 with Interface

use of io.automatiko.engine.workflow.bpmn2.core.Interface in project jbpm by kiegroup.

the class DefinitionsHandler method end.

public Object end(final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
    final Element element = parser.endElementBuilder();
    Definitions definitions = (Definitions) parser.getCurrent();
    String namespace = element.getAttribute("targetNamespace");
    List<Process> processes = ((ProcessBuildData) parser.getData()).getProcesses();
    Map<String, ItemDefinition> itemDefinitions = (Map<String, ItemDefinition>) ((ProcessBuildData) parser.getData()).getMetaData("ItemDefinitions");
    List<Interface> interfaces = (List<Interface>) ((ProcessBuildData) parser.getData()).getMetaData("Interfaces");
    for (Process process : processes) {
        RuleFlowProcess ruleFlowProcess = (RuleFlowProcess) process;
        ruleFlowProcess.setMetaData("TargetNamespace", namespace);
        postProcessItemDefinitions(ruleFlowProcess, itemDefinitions, parser.getClassLoader());
        postProcessInterfaces(ruleFlowProcess, interfaces);
    }
    definitions.setTargetNamespace(namespace);
    return definitions;
}
Also used : RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) Element(org.w3c.dom.Element) Definitions(org.jbpm.bpmn2.core.Definitions) ItemDefinition(org.jbpm.bpmn2.core.ItemDefinition) Process(org.kie.api.definition.process.Process) RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) ProcessBuildData(org.jbpm.compiler.xml.ProcessBuildData) List(java.util.List) Map(java.util.Map) Interface(org.jbpm.bpmn2.core.Interface)

Example 2 with Interface

use of io.automatiko.engine.workflow.bpmn2.core.Interface 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);
            }
        }
    }
}
Also used : ForEachNode(org.jbpm.workflow.core.node.ForEachNode) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) Node(org.kie.api.definition.process.Node) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) NodeContainer(org.jbpm.workflow.core.NodeContainer) Operation(org.jbpm.bpmn2.core.Interface.Operation) Interface(org.jbpm.bpmn2.core.Interface)

Example 3 with Interface

use of io.automatiko.engine.workflow.bpmn2.core.Interface 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;
}
Also used : Operation(org.jbpm.bpmn2.core.Interface.Operation) Interface(org.jbpm.bpmn2.core.Interface)

Example 4 with Interface

use of io.automatiko.engine.workflow.bpmn2.core.Interface 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;
}
Also used : Node(org.jbpm.workflow.core.Node) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) List(java.util.List) Operation(org.jbpm.bpmn2.core.Interface.Operation) Interface(org.jbpm.bpmn2.core.Interface)

Example 5 with Interface

use of io.automatiko.engine.workflow.bpmn2.core.Interface in project automatiko-engine by automatiko-io.

the class InterfaceHandler method start.

@SuppressWarnings("unchecked")
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");
    if (name == null || name.isEmpty()) {
        throw new MalformedNodeException(id, name, "interface name is a required attribute");
    }
    ProcessBuildData buildData = (ProcessBuildData) parser.getData();
    List<Interface> interfaces = (List<Interface>) buildData.getMetaData("Interfaces");
    if (interfaces == null) {
        interfaces = new ArrayList<Interface>();
        buildData.setMetaData("Interfaces", interfaces);
    }
    Interface i = new Interface(id, name);
    if (implRef != null) {
        i.setImplementationRef(implRef);
    }
    interfaces.add(i);
    return i;
}
Also used : ProcessBuildData(io.automatiko.engine.workflow.compiler.xml.ProcessBuildData) ArrayList(java.util.ArrayList) List(java.util.List) Interface(io.automatiko.engine.workflow.bpmn2.core.Interface)

Aggregations

Interface (org.jbpm.bpmn2.core.Interface)8 List (java.util.List)7 Operation (org.jbpm.bpmn2.core.Interface.Operation)6 Interface (io.automatiko.engine.workflow.bpmn2.core.Interface)5 WorkItemNode (org.jbpm.workflow.core.node.WorkItemNode)4 Operation (io.automatiko.engine.workflow.bpmn2.core.Interface.Operation)3 Map (java.util.Map)3 Element (org.w3c.dom.Element)3 ProcessBuildData (io.automatiko.engine.workflow.compiler.xml.ProcessBuildData)2 WorkItemNode (io.automatiko.engine.workflow.process.core.node.WorkItemNode)2 Definitions (org.jbpm.bpmn2.core.Definitions)2 ItemDefinition (org.jbpm.bpmn2.core.ItemDefinition)2 ProcessBuildData (org.jbpm.compiler.xml.ProcessBuildData)2 RuleFlowProcess (org.jbpm.ruleflow.core.RuleFlowProcess)2 NodeContainer (org.jbpm.workflow.core.NodeContainer)2 ForEachNode (org.jbpm.workflow.core.node.ForEachNode)2 Node (org.kie.api.definition.process.Node)2 Process (org.kie.api.definition.process.Process)2 Node (io.automatiko.engine.api.definition.process.Node)1 Process (io.automatiko.engine.api.definition.process.Process)1