public void writeTimers(final Map<Timer, DroolsAction> timers, final StringBuilder xmlDump) { if (timers != null && !timers.isEmpty()) { xmlDump.append(" <timers>" + EOL); List<Timer> timerList = new ArrayList<Timer>(timers.keySet()); Collections.sort(timerList, new Comparator<Timer>() { public int compare(Timer o1, Timer o2) { return (int) (o2.getId() - o1.getId()); } }); for (Timer timer: timerList) { xmlDump.append(" <timer id=\"" + timer.getId() + "\" "); if (timer.getDelay() != null) { xmlDump.append("delay=\"" + timer.getDelay() + "\" "); } if (timer.getPeriod() != null) { xmlDump.append("period=\"" + timer.getPeriod() + "\" "); } xmlDump.append(">" + EOL); writeAction(timers.get(timer), xmlDump); xmlDump.append(" </timer>" + EOL); } xmlDump.append(" </timers>" + EOL); } }
public void writeNode(Node node, StringBuilder xmlDump, int metaDataType) { TimerNode timerNode = (TimerNode) node; writeNode("intermediateCatchEvent", timerNode, xmlDump, metaDataType); xmlDump.append(">" + EOL); writeExtensionElements(node, xmlDump); xmlDump.append(" <timerEventDefinition>" + EOL); Timer timer = timerNode.getTimer(); if (timer != null && (timer.getDelay() != null || timer.getDate() != null)) { if (timer.getTimeType() == Timer.TIME_DURATION) { xmlDump.append(" <timeDuration xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDuration>" + EOL); } else if (timer.getTimeType() == Timer.TIME_CYCLE) { if (timer.getPeriod() != null) { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "###" + XmlDumper.replaceIllegalChars(timer.getPeriod()) + "</timeCycle>" + EOL); } else { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeCycle>" + EOL); } } else if (timer.getTimeType() == Timer.TIME_DATE) { xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDate>" + EOL); } } xmlDump.append(" </timerEventDefinition>" + EOL); endNode("intermediateCatchEvent", xmlDump); }
private void initTimer(InternalKnowledgeRuntime kruntime) { for (StartNode startNode : startNodes) { if (startNode != null && startNode.getTimer() != null) { TimerInstance timerInstance = null; if (startNode.getTimer().getDelay() != null && CronExpression.isValidExpression(startNode.getTimer().getDelay())) { timerInstance = new TimerInstance(); timerInstance.setCronExpression(startNode.getTimer().getDelay()); } else { timerInstance = createTimerInstance(startNode.getTimer(), kruntime); } timerManager.registerTimer(timerInstance, processId, null); } } }
public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) { TimerNode timerNode = (TimerNode) node; writeNode("timerNode", timerNode, xmlDump, includeMeta); Timer timer = timerNode.getTimer(); if (timer != null) { xmlDump.append("delay=\"" + timer.getDelay() + "\" "); if (timer.getPeriod() != null) { xmlDump.append(" period=\"" + timer.getPeriod() + "\" "); } } if (includeMeta && containsMetaData(timerNode)) { xmlDump.append(">" + EOL); writeMetaData(timerNode, xmlDump); endNode("timerNode", xmlDump); } else { endNode(xmlDump); } }
Timer timer = startNode.getTimer(); xmlDump.append(" <timerEventDefinition>" + EOL); if (timer != null && (timer.getDelay() != null || timer.getDate() != null)) { if (timer.getTimeType() == Timer.TIME_DATE) { xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDate()) + "</timeDate>" + EOL); } else if (timer.getTimeType() == Timer.TIME_DURATION) { xmlDump.append(" <timeDuration xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDuration>" + EOL); } else if (timer.getTimeType() == Timer.TIME_CYCLE) { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "###" + XmlDumper.replaceIllegalChars(timer.getPeriod()) + "</timeCycle>" + EOL); } else { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeCycle>" + EOL); xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDate>" + EOL); Timer timer = startNode.getTimer(); xmlDump.append(" <timerEventDefinition>" + EOL); if (timer != null && (timer.getDelay() != null || timer.getDate() != null)) { if (timer.getTimeType() == Timer.TIME_DATE) { xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDate()) + "</timeDate>" + EOL); } else if (timer.getTimeType() == Timer.TIME_DURATION) { xmlDump.append(" <timeDuration xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDuration>" + EOL); } else if (timer.getTimeType() == Timer.TIME_CYCLE) { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "###" + XmlDumper.replaceIllegalChars(timer.getPeriod()) + "</timeCycle>" + EOL); } else { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeCycle>" + EOL); xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDate>" + EOL);
final RuleFlowProcess process, final List<ProcessValidationError> errors) { if (timer.getDelay() == null && timer.getDate() == null) { addErrorMessage(process, node, "Has timer with no delay or date specified."); } else { if (timer.getDelay() != null && !timer.getDelay().contains("#{")) { try { switch (timer.getTimeType()) { case Timer.TIME_CYCLE: if (CronExpression.isValidExpression(timer.getDelay())) { DateTimeUtils.parseRepeatableDateTime(timer.getDelay()); case Timer.TIME_DURATION: DateTimeUtils.parseDuration(timer.getDelay()); node, errors, "Could not parse delay '" + timer.getDelay() + "': " + e.getMessage());
case Timer.TIME_CYCLE: if (CronExpression.isValidExpression(timer.getDelay())) { timerInstance.setCronExpression(timer.getDelay()); } else { String tempDelay = resolveVariable(timer.getDelay()); String tempPeriod = resolveVariable(timer.getPeriod()); if (DateTimeUtils.isRepeatable(tempDelay)) { delay = resolveVariable(timer.getDelay());
case Timer.TIME_CYCLE: if (timer.getPeriod() != null) { timerInstance.setDelay(resolveValue(timer.getDelay())); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); String resolvedDelay = resolveVariable(timer.getDelay()); if (CronExpression.isValidExpression(resolvedDelay)) { timerInstance.setCronExpression(resolvedDelay); repeatValues = DateTimeUtils.parseRepeatableDateTime(timer.getDelay()); } catch (RuntimeException e) { duration = DateTimeUtils.parseDuration(timer.getDelay()); } catch (RuntimeException e) { s = resolveVariable(timer.getDelay()); duration = DateTimeUtils.parseDuration(s);
case Timer.TIME_CYCLE: long[] repeatValues = DateTimeUtils.parseRepeatableDateTime(timer.getDelay()); if (repeatValues.length == 3) { int parsedReapedCount = (int)repeatValues[0]; case Timer.TIME_DURATION: duration = DateTimeUtils.parseDuration(timer.getDelay()); timerInstance.setDelay(duration); timerInstance.setPeriod(0);
protected TimerInstance createTimerInstance(Timer timer, InternalKnowledgeRuntime kruntime) { TimerInstance timerInstance = new TimerInstance(); if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){ BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar"); String delay = timer.getDelay(); timerInstance.setDelay(businessCalendar.calculateBusinessTimeAsDuration(delay)); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); } else { String period = timer.getPeriod(); timerInstance.setPeriod(businessCalendar.calculateBusinessTimeAsDuration(period)); } } else { configureTimerInstance(timer, timerInstance); } timerInstance.setTimerId(timer.getId()); return timerInstance; }
protected TimerInstance createTimerInstance(InternalKnowledgeRuntime kruntime) { Timer timer = getTimerNode().getTimer(); TimerInstance timerInstance = new TimerInstance(); if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){ BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar"); String delay = resolveVariable(timer.getDelay()); timerInstance.setDelay(businessCalendar.calculateBusinessTimeAsDuration(delay)); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); } else { String period = resolveVariable(timer.getPeriod()); timerInstance.setPeriod(businessCalendar.calculateBusinessTimeAsDuration(period)); } } else { configureTimerInstance(timer, timerInstance); } timerInstance.setTimerId(timer.getId()); return timerInstance; }
public void writeTimers(final Map<Timer, DroolsAction> timers, final StringBuilder xmlDump) { if (timers != null && !timers.isEmpty()) { xmlDump.append(" <timers>" + EOL); List<Timer> timerList = new ArrayList<Timer>(timers.keySet()); Collections.sort(timerList, new Comparator<Timer>() { public int compare(Timer o1, Timer o2) { return (int) (o2.getId() - o1.getId()); } }); for (Timer timer: timerList) { xmlDump.append(" <timer id=\"" + timer.getId() + "\" "); if (timer.getDelay() != null) { xmlDump.append("delay=\"" + timer.getDelay() + "\" "); } if (timer.getPeriod() != null) { xmlDump.append("period=\"" + timer.getPeriod() + "\" "); } xmlDump.append(">" + EOL); writeAction(timers.get(timer), xmlDump); xmlDump.append(" </timer>" + EOL); } xmlDump.append(" </timers>" + EOL); } }
public void writeNode(Node node, StringBuilder xmlDump, int metaDataType) { TimerNode timerNode = (TimerNode) node; writeNode("intermediateCatchEvent", timerNode, xmlDump, metaDataType); xmlDump.append(">" + EOL); writeExtensionElements(node, xmlDump); xmlDump.append(" <timerEventDefinition>" + EOL); Timer timer = timerNode.getTimer(); if (timer != null && (timer.getDelay() != null || timer.getDate() != null)) { if (timer.getTimeType() == Timer.TIME_DURATION) { xmlDump.append(" <timeDuration xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDuration>" + EOL); } else if (timer.getTimeType() == Timer.TIME_CYCLE) { if (timer.getPeriod() != null) { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "###" + XmlDumper.replaceIllegalChars(timer.getPeriod()) + "</timeCycle>" + EOL); } else { xmlDump.append(" <timeCycle xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeCycle>" + EOL); } } else if (timer.getTimeType() == Timer.TIME_DATE) { xmlDump.append(" <timeDate xsi:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(timer.getDelay()) + "</timeDate>" + EOL); } } xmlDump.append(" </timerEventDefinition>" + EOL); endNode("intermediateCatchEvent", xmlDump); }
private void initTimer(InternalKnowledgeRuntime kruntime) { for (StartNode startNode : startNodes) { if (startNode != null && startNode.getTimer() != null) { TimerInstance timerInstance = null; if (startNode.getTimer().getDelay() != null && CronExpression.isValidExpression(startNode.getTimer().getDelay())) { timerInstance = new TimerInstance(); timerInstance.setCronExpression(startNode.getTimer().getDelay()); } else { timerInstance = createTimerInstance(startNode.getTimer(), kruntime); } timerManager.registerTimer(timerInstance, processId, null); } } }
public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) { TimerNode timerNode = (TimerNode) node; writeNode("timerNode", timerNode, xmlDump, includeMeta); Timer timer = timerNode.getTimer(); if (timer != null) { xmlDump.append("delay=\"" + timer.getDelay() + "\" "); if (timer.getPeriod() != null) { xmlDump.append(" period=\"" + timer.getPeriod() + "\" "); } } if (includeMeta && containsMetaData(timerNode)) { xmlDump.append(">" + EOL); writeMetaData(timerNode, xmlDump); endNode("timerNode", xmlDump); } else { endNode(xmlDump); } }
case Timer.TIME_CYCLE: if (CronExpression.isValidExpression(timer.getDelay())) { timerInstance.setCronExpression(timer.getDelay()); } else { String tempDelay = resolveVariable(timer.getDelay()); String tempPeriod = resolveVariable(timer.getPeriod()); if (DateTimeUtils.isRepeatable(tempDelay)) { delay = resolveVariable(timer.getDelay());
case Timer.TIME_CYCLE: if (timer.getPeriod() != null) { timerInstance.setDelay(resolveValue(timer.getDelay())); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); String resolvedDelay = resolveVariable(timer.getDelay()); if (CronExpression.isValidExpression(resolvedDelay)) { timerInstance.setCronExpression(resolvedDelay); repeatValues = DateTimeUtils.parseRepeatableDateTime(timer.getDelay()); } catch (RuntimeException e) { duration = DateTimeUtils.parseDuration(timer.getDelay()); } catch (RuntimeException e) { s = resolveVariable(timer.getDelay()); duration = DateTimeUtils.parseDuration(s);
case Timer.TIME_CYCLE: long[] repeatValues = DateTimeUtils.parseRepeatableDateTime(timer.getDelay()); if (repeatValues.length == 3) { int parsedReapedCount = (int)repeatValues[0]; case Timer.TIME_DURATION: duration = DateTimeUtils.parseDuration(timer.getDelay()); timerInstance.setDelay(duration); timerInstance.setPeriod(0);
protected TimerInstance createTimerInstance(Timer timer, InternalKnowledgeRuntime kruntime) { TimerInstance timerInstance = new TimerInstance(); if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){ BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar"); String delay = timer.getDelay(); timerInstance.setDelay(businessCalendar.calculateBusinessTimeAsDuration(delay)); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); } else { String period = timer.getPeriod(); timerInstance.setPeriod(businessCalendar.calculateBusinessTimeAsDuration(period)); } } else { configureTimerInstance(timer, timerInstance); } timerInstance.setTimerId(timer.getId()); return timerInstance; }
protected TimerInstance createTimerInstance(InternalKnowledgeRuntime kruntime) { Timer timer = getTimerNode().getTimer(); TimerInstance timerInstance = new TimerInstance(); if (kruntime != null && kruntime.getEnvironment().get("jbpm.business.calendar") != null){ BusinessCalendar businessCalendar = (BusinessCalendar) kruntime.getEnvironment().get("jbpm.business.calendar"); String delay = resolveVariable(timer.getDelay()); timerInstance.setDelay(businessCalendar.calculateBusinessTimeAsDuration(delay)); if (timer.getPeriod() == null) { timerInstance.setPeriod(0); } else { String period = resolveVariable(timer.getPeriod()); timerInstance.setPeriod(businessCalendar.calculateBusinessTimeAsDuration(period)); } } else { configureTimerInstance(timer, timerInstance); } timerInstance.setTimerId(timer.getId()); return timerInstance; }