Search in sources :

Example 11 with Signal

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

the class AbstractNodeHandler method findSignalByName.

protected Signal findSignalByName(ExtensibleXmlParser parser, String signalName) {
    ProcessBuildData buildData = ((ProcessBuildData) parser.getData());
    Set<String> signalNames = (Set<String>) buildData.getMetaData(SIGNAL_NAMES);
    if (signalNames == null) {
        signalNames = new HashSet<>();
        buildData.setMetaData(SIGNAL_NAMES, signalNames);
    }
    signalNames.add(signalName);
    Map<String, Signal> signals = (Map<String, Signal>) buildData.getMetaData("Signals");
    if (signals != null) {
        return signals.get(signalName);
    }
    return null;
}
Also used : Signal(io.automatiko.engine.workflow.bpmn2.core.Signal) ProcessBuildData(io.automatiko.engine.workflow.compiler.xml.ProcessBuildData) HashSet(java.util.HashSet) Set(java.util.Set) HashMap(java.util.HashMap) Map(java.util.Map)

Example 12 with Signal

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

the class IntermediateCatchEventHandler method handleSignalNode.

protected void handleSignalNode(final Node node, final Element element, final String uri, final String localName, final ExtensibleXmlParser parser) throws SAXException {
    super.handleNode(node, element, uri, localName, parser);
    EventNode eventNode = (EventNode) node;
    org.w3c.dom.Node xmlNode = element.getFirstChild();
    while (xmlNode != null) {
        String nodeName = xmlNode.getNodeName();
        if ("dataOutput".equals(nodeName)) {
            String id = ((Element) xmlNode).getAttribute("id");
            String outputName = ((Element) xmlNode).getAttribute("name");
            dataOutputs.put(id, outputName);
            populateDataOutputs(xmlNode, outputName, parser);
        } else if ("dataOutputAssociation".equals(nodeName)) {
            readDataOutputAssociation(xmlNode, eventNode);
        } else if ("signalEventDefinition".equals(nodeName)) {
            String type = ((Element) xmlNode).getAttribute("signalRef");
            if (type != null && type.trim().length() > 0) {
                Signal signal = findSignalByName(parser, type);
                if (signal != null) {
                    eventNode.setMetaData("MessageType", retrieveDataType(signal.getStructureRef(), null, parser));
                }
                type = checkSignalAndConvertToRealSignalNam(parser, type);
                List<EventFilter> eventFilters = new ArrayList<EventFilter>();
                EventTypeFilter eventFilter = new EventTypeFilter();
                eventFilter.setType(type);
                eventFilters.add(eventFilter);
                eventNode.setEventFilters(eventFilters);
            }
        }
        xmlNode = xmlNode.getNextSibling();
    }
}
Also used : EventNode(io.automatiko.engine.workflow.process.core.node.EventNode) Signal(io.automatiko.engine.workflow.bpmn2.core.Signal) EventTypeFilter(io.automatiko.engine.workflow.base.core.event.EventTypeFilter) Element(org.w3c.dom.Element) ArrayList(java.util.ArrayList) EventFilter(io.automatiko.engine.workflow.base.core.event.EventFilter)

Example 13 with Signal

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

the class SignalHandler 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);
    // according to the (Semantic.)xsd, both the name and structureRef are optional
    String id = attrs.getValue("id");
    // referred to by the signalEventDefinition.signalRef attr
    String name = attrs.getValue("name");
    String structureRef = attrs.getValue("structureRef");
    ProcessBuildData buildData = (ProcessBuildData) parser.getData();
    Map<String, Signal> signals = (Map<String, Signal>) buildData.getMetaData("Signals");
    if (signals == null) {
        signals = new HashMap<String, Signal>();
        buildData.setMetaData("Signals", signals);
    }
    Signal s = new Signal(id, name, structureRef);
    signals.put(id, s);
    return s;
}
Also used : Signal(io.automatiko.engine.workflow.bpmn2.core.Signal) ProcessBuildData(io.automatiko.engine.workflow.compiler.xml.ProcessBuildData) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Signal (org.jbpm.bpmn2.core.Signal)9 Map (java.util.Map)7 HashMap (java.util.HashMap)5 Signal (io.automatiko.engine.workflow.bpmn2.core.Signal)4 HashSet (java.util.HashSet)4 Set (java.util.Set)4 ProcessBuildData (org.jbpm.compiler.xml.ProcessBuildData)4 Test (org.junit.Test)4 ProcessBuildData (io.automatiko.engine.workflow.compiler.xml.ProcessBuildData)3 ArrayList (java.util.ArrayList)3 Message (org.jbpm.bpmn2.core.Message)3 Element (org.w3c.dom.Element)3 List (java.util.List)2 SignalDesc (org.jbpm.services.api.model.SignalDesc)2 EventFilter (io.automatiko.engine.workflow.base.core.event.EventFilter)1 EventTypeFilter (io.automatiko.engine.workflow.base.core.event.EventTypeFilter)1 Error (io.automatiko.engine.workflow.bpmn2.core.Error)1 Escalation (io.automatiko.engine.workflow.bpmn2.core.Escalation)1 ItemDefinition (io.automatiko.engine.workflow.bpmn2.core.ItemDefinition)1 Message (io.automatiko.engine.workflow.bpmn2.core.Message)1