protected Node createNode() { return new MilestoneNode(); }
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); MilestoneNode milestoneNode = (MilestoneNode) node; ProcessBuildData buildData = (ProcessBuildData) parser.getData(); Map<String, PlanItem> planItems = (Map<String, PlanItem>) buildData.getMetaData("PlanItems"); PlanItem milestonePlanItem = planItems.get(milestoneNode.getMetaData("UniqueId")); if (milestonePlanItem != null && milestonePlanItem.getExitCriterion() != null) { milestoneNode.setConstraint(milestonePlanItem.getExitCriterion().getExpression()); } }
public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) { MilestoneNode milestoneNode = (MilestoneNode) node; writeNode("milestone", milestoneNode, xmlDump, includeMeta); String constraint = milestoneNode.getConstraint(); if (constraint != null || milestoneNode.getTimers() != null || milestoneNode.containsActions()) { xmlDump.append(">\n"); if (includeMeta) { writeMetaData(milestoneNode, xmlDump); } if (constraint != null) { xmlDump.append(" <constraint type=\"rule\" dialect=\"mvel\" >" + XmlDumper.replaceIllegalChars(constraint.trim()) + "</constraint>" + EOL); } for (String eventType: milestoneNode.getActionTypes()) { writeActions(eventType, milestoneNode.getActions(eventType), xmlDump); } writeTimers(milestoneNode.getTimers(), xmlDump); endNode("milestone", xmlDump); } else { endNode(xmlDump); } }
private String createMilestoneRule(Process process, MilestoneNode milestone) { return "rule \"RuleFlow-Milestone-" + process.getId() + "-" + milestone.getUniqueId() + "\" @Propagation(EAGER) \n" + " ruleflow-group \"DROOLS_SYSTEM\" \n" + " when \n" + " " + milestone.getConstraint() + "\n" + " then \n" + "end \n\n"; }
public MilestoneNodeFactory onEntryAction(String dialect, String action) { if (getMilestoneNode().getActions(dialect) != null) { getMilestoneNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action)); } else { List<DroolsAction> actions = new ArrayList<DroolsAction>(); actions.add(new DroolsConsequenceAction(dialect, action)); getMilestoneNode().setActions(MilestoneNode.EVENT_NODE_ENTER, actions); } return this; }
MilestoneNode milestoneNode = new MilestoneNode(); milestoneNode.setId(workItemNode.getId()); milestoneNode.setConstraint(milestoneCondition); milestoneNode.setMatchVariable((String)((WorkItemNode)node).getWork().getParameter("MatchVariable")); milestoneNode.setMetaData(workItemNode.getMetaData()); milestoneNode.setName(workItemNode.getName()); milestoneNode.setNodeContainer(workItemNode.getNodeContainer());
new ConnectionImpl(eventNode, Node.CONNECTION_DEFAULT_TYPE, join, Node.CONNECTION_DEFAULT_TYPE); MilestoneNode milestone = new MilestoneNode(); milestone.setName("milestone"); milestone.setMetaData("x", 1); milestone.setMetaData("y", 2); milestone.setMetaData("width", 3); milestone.setMetaData("height", 4); milestone.setConstraint("constraint"); timer = new Timer(); timer.setDelay("100"); timer.setPeriod("100"); action = new DroolsConsequenceAction("dialect", "consequence"); milestone.addTimer(timer, action); timer = new Timer(); timer.setDelay("200"); timer.setPeriod("200"); action = new DroolsConsequenceAction("dialect", "consequence"); milestone.addTimer(timer, action); List<DroolsAction> actions = new ArrayList<DroolsAction>(); DroolsAction action1 = new DroolsConsequenceAction("java", "System.out.println(\"action1\");"); DroolsAction action2 = new DroolsConsequenceAction("java", "System.out.println(\"action2\");"); actions.add(action2); milestone.setActions(ExtendedNodeImpl.EVENT_NODE_ENTER, actions); milestone.setActions(ExtendedNodeImpl.EVENT_NODE_EXIT, actions); process.addNode(milestone); connection = new ConnectionImpl(join, Node.CONNECTION_DEFAULT_TYPE, milestone, Node.CONNECTION_DEFAULT_TYPE);
process.addNode(startNode); MilestoneNode milestoneNode = new MilestoneNode(); milestoneNode.setName("Milestone"); milestoneNode.setConstraint("eval(false)"); milestoneNode.setId(2); process.addNode(milestoneNode); new ConnectionImpl(
); MilestoneNode milestoneNode = new MilestoneNode(); milestoneNode.setName("Milestone"); milestoneNode.setConstraint("eval(false)"); compositeNode.addNode(milestoneNode); compositeNode.linkIncomingConnections(Node.CONNECTION_DEFAULT_TYPE, milestoneNode.getId(), Node.CONNECTION_DEFAULT_TYPE);
if (milestone.getFrom() == null && !acceptsNoIncomingConnections(node)) { addErrorMessage(process, node, if (milestone.getTo() == null && !acceptsNoOutgoingConnections(node)) { addErrorMessage(process, node, "Milestone has no outgoing connection."); if (milestone.getConstraint() == null) { addErrorMessage(process, node, "Milestone has no constraint."); if (milestone.getTimers() != null) { for (Timer timer : milestone.getTimers().keySet()) { validateTimer(timer, node,
assertThat(milestone.getName()).isEqualTo("All work done"); assertThat(milestone.getConstraint()).isEqualTo("org.kie.api.runtime.process.CaseData(data.get(\"shipped\") !=null)"); assertThat(milestone.getMetaData("customAutoStart")).isEqualTo("true");
public MilestoneNodeFactory constraint(String constraint) { getMilestoneNode().setConstraint(constraint); return this; }
assertThat(humanTaskTwo.getName()).isEqualTo("Milestone"); assertThat(humanTaskTwo.getConstraint()).isEqualTo("org.kie.api.runtime.process.CaseData(data.get(\"shipped\") !=null)");
public void matchCreated(MatchCreatedEvent event) { // check whether this activation is from the DROOLS_SYSTEM agenda group String ruleFlowGroup = ((RuleImpl) event.getMatch().getRule()).getRuleFlowGroup(); if ("DROOLS_SYSTEM".equals(ruleFlowGroup)) { // new activations of the rule associate with a milestone node // trigger node instances of that milestone node String ruleName = event.getMatch().getRule().getName(); String milestoneName = "RuleFlow-Milestone-" + getProcessInstance().getProcessId() + "-" + getMilestoneNode().getUniqueId(); if (milestoneName.equals(ruleName) && checkProcessInstance((Activation) event.getMatch()) && checkDeclarationMatch(event.getMatch(), getMilestoneNode().getMatchVariable())) { synchronized(getProcessInstance()) { removeEventListeners(); triggerCompleted(); } } } }
private String getActivationEventType() { return "RuleFlow-Milestone-" + getProcessInstance().getProcessId() + "-" + getMilestoneNode().getUniqueId(); }
public MilestoneNodeFactory timer(String delay, String period, String dialect, String action) { Timer timer = new Timer(); timer.setDelay(delay); timer.setPeriod(period); getMilestoneNode().addTimer(timer, new DroolsConsequenceAction(dialect, action)); return this; }
MilestoneNode milestoneNode = new MilestoneNode(); milestoneNode.setId(workItemNode.getId()); milestoneNode.setConstraint(milestoneCondition); milestoneNode.setMatchVariable((String)((WorkItemNode)node).getWork().getParameter("MatchVariable")); milestoneNode.setMetaData(workItemNode.getMetaData()); milestoneNode.setName(workItemNode.getName()); milestoneNode.setNodeContainer(workItemNode.getNodeContainer());
process.addNode(startNode); MilestoneNode milestoneNode = new MilestoneNode(); milestoneNode.setName("Milestone"); milestoneNode.setConstraint("eval(false)"); milestoneNode.setId(2); process.addNode(milestoneNode); new ConnectionImpl(
if (milestone.getFrom() == null && !acceptsNoIncomingConnections(node)) { addErrorMessage(process, node, if (milestone.getTo() == null && !acceptsNoOutgoingConnections(node)) { addErrorMessage(process, node, "Milestone has no outgoing connection."); if (milestone.getConstraint() == null) { addErrorMessage(process, node, "Milestone has no constraint."); if (milestone.getTimers() != null) { for (Timer timer : milestone.getTimers().keySet()) { validateTimer(timer, node,
assertThat(milestone.getName()).isEqualTo("All work done"); assertThat(milestone.getConstraint()).isEqualTo("org.kie.api.runtime.process.CaseData(data.get(\"shipped\") !=null)"); assertThat(milestone.getMetaData("customAutoStart")).isEqualTo("true");