Source:
<code>public void internalTrigger(final org.kie.api.runtime.process.NodeInstance from, String type) { super.internalTrigger(from, type); if (getNodeInstanceContainer().getNodeInstance(getId()) == null) { return; } CompositeNode.NodeAndType nodeAndType = getCompositeNode().internalGetLinkedIncomingNode(type); if (nodeAndType != null) { List<Connection> connections = nodeAndType.getNode().getIncomingConnections(nodeAndType.getType()); for (Iterator<Connection> iterator = connections.iterator(); iterator.hasNext(); ) { Connection connection = iterator.next(); long fromNodeId = from != null ? from.getNodeId() : -1; if (from != null && from.getNode() instanceof AsyncEventNode) { fromNodeId = ((AsyncEventNode) from.getNode()).getPreviousNode(type).getId(); } if ((connection.getFrom() instanceof CompositeNode.CompositeNodeStart) && (from == null || <START> ((CompositeNode.CompositeNodeStart) connection.getFrom()).getInNode().getId() == fromNodeId)) { <END> NodeInstance nodeInstance = getNodeInstance(connection.getFrom()); ((org.jbpm.workflow.instance.NodeInstance) nodeInstance).trigger(null, nodeAndType.getType()); return; } } } else { boolean found = false; for (Node node: getCompositeNode().getNodes()) { if (node instanceof StartNode) { StartNode startNode = (StartNode) node; if (startNode.getTriggers() == null || startNode.getTriggers().isEmpty()) { NodeInstance nodeInstance = getNodeInstance(startNode); ((org.jbpm.workflow.instance.NodeInstance) nodeInstance) .trigger(null, null); found = true; } } } if (found) { return; } } if (isLinkedIncomingNodeRequired()) { throw new IllegalArgumentException( "Could not find start for composite node: " + type); } }</code><technical_language>if exclude based metadata work, I this code change needed</technical_language>

Target:
public void internalTrigger(final org.kie.api.runtime.process.NodeInstance from, String type) { super.internalTrigger(from, type); if (getNodeInstanceContainer().getNodeInstance(getId()) == null) { return; } CompositeNode.NodeAndType nodeAndType = getCompositeNode().internalGetLinkedIncomingNode(type); if (nodeAndType != null) { List<Connection> connections = nodeAndType.getNode().getIncomingConnections(nodeAndType.getType()); for (Iterator<Connection> iterator = connections.iterator(); iterator.hasNext(); ) { Connection connection = iterator.next(); if ((connection.getFrom() instanceof CompositeNode.CompositeNodeStart) && (from == null || ((CompositeNode.CompositeNodeStart) connection.getFrom()).getInNode().getId() == from.getNodeId())) { NodeInstance nodeInstance = getNodeInstance(connection.getFrom()); ((org.jbpm.workflow.instance.NodeInstance) nodeInstance).trigger(null, nodeAndType.getType()); return; } } } else { boolean found = false; for (Node node: getCompositeNode().getNodes()) { if (node instanceof StartNode) { StartNode startNode = (StartNode) node; if (startNode.getTriggers() == null || startNode.getTriggers().isEmpty()) { NodeInstance nodeInstance = getNodeInstance(startNode); ((org.jbpm.workflow.instance.NodeInstance) nodeInstance) .trigger(null, null); found = true; } } } if (found) { return; } } if (isLinkedIncomingNodeRequired()) { throw new IllegalArgumentException( "Could not find start for composite node: " + type); } }