Search in sources :

Example 16 with Timer

use of org.jbpm.process.core.timer.Timer in project jbpm by kiegroup.

the class TimerNodeHandler method handleNode.

public 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);
    TimerNode timerNode = (TimerNode) node;
    String delay = element.getAttribute("delay");
    String period = element.getAttribute("period");
    if ((delay != null && delay.length() > 0) || (period != null && period.length() > 0)) {
        Timer timer = timerNode.getTimer();
        if (timer == null) {
            timer = new Timer();
            timerNode.setTimer(timer);
        }
        if (delay != null && delay.length() != 0) {
            timer.setDelay(delay);
        }
        if (period != null && period.length() != 0) {
            timer.setPeriod(period);
        }
    }
}
Also used : Timer(org.jbpm.process.core.timer.Timer) TimerNode(org.jbpm.workflow.core.node.TimerNode)

Example 17 with Timer

use of org.jbpm.process.core.timer.Timer in project jbpm by kiegroup.

the class EventBasedNodeBuilder method build.

public void build(Process process, ProcessDescr processDescr, ProcessBuildContext context, Node node) {
    super.build(process, processDescr, context, node);
    Map<Timer, DroolsAction> timers = ((StateBasedNode) node).getTimers();
    if (timers != null) {
        for (DroolsAction action : timers.values()) {
            buildAction(action, context, (NodeImpl) node);
        }
    }
}
Also used : DroolsAction(org.jbpm.workflow.core.DroolsAction) StateBasedNode(org.jbpm.workflow.core.node.StateBasedNode) Timer(org.jbpm.process.core.timer.Timer)

Example 18 with Timer

use of org.jbpm.process.core.timer.Timer in project jbpm by kiegroup.

the class TimerNodeInstance method createTimerInstance.

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;
}
Also used : Timer(org.jbpm.process.core.timer.Timer) TimerInstance(org.jbpm.process.instance.timer.TimerInstance) BusinessCalendar(org.jbpm.process.core.timer.BusinessCalendar)

Example 19 with Timer

use of org.jbpm.process.core.timer.Timer in project jbpm by kiegroup.

the class StateBasedNodeInstance method internalTrigger.

public void internalTrigger(NodeInstance from, String type) {
    super.internalTrigger(from, type);
    // if node instance was cancelled, abort
    if (getNodeInstanceContainer().getNodeInstance(getId()) == null) {
        return;
    }
    // activate timers
    Map<Timer, DroolsAction> timers = getEventBasedNode().getTimers();
    if (timers != null) {
        addTimerListener();
        timerInstances = new ArrayList<Long>(timers.size());
        TimerManager timerManager = ((InternalProcessRuntime) getProcessInstance().getKnowledgeRuntime().getProcessRuntime()).getTimerManager();
        for (Timer timer : timers.keySet()) {
            TimerInstance timerInstance = createTimerInstance(timer);
            timerManager.registerTimer(timerInstance, (ProcessInstance) getProcessInstance());
            timerInstances.add(timerInstance.getId());
        }
    }
    if (getEventBasedNode().getBoundaryEvents() != null) {
        for (String name : getEventBasedNode().getBoundaryEvents()) {
            boolean isActive = ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda()).isRuleActiveInRuleFlowGroup("DROOLS_SYSTEM", name, getProcessInstance().getId());
            if (isActive) {
                getProcessInstance().getKnowledgeRuntime().signalEvent(name, null);
            } else {
                addActivationListener();
            }
        }
    }
    ((WorkflowProcessInstanceImpl) getProcessInstance()).addActivatingNodeId((String) getNode().getMetaData().get("UniqueId"));
}
Also used : DroolsAction(org.jbpm.workflow.core.DroolsAction) InternalAgenda(org.drools.core.common.InternalAgenda) Timer(org.jbpm.process.core.timer.Timer) TimerInstance(org.jbpm.process.instance.timer.TimerInstance) WorkflowProcessInstanceImpl(org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl) InternalProcessRuntime(org.jbpm.process.instance.InternalProcessRuntime) TimerManager(org.jbpm.process.instance.timer.TimerManager)

Example 20 with Timer

use of org.jbpm.process.core.timer.Timer in project jbpm by kiegroup.

the class StateBasedNode method addTimer.

public void addTimer(Timer timer, DroolsAction action) {
    if (timers == null) {
        timers = new HashMap<Timer, DroolsAction>();
    }
    if (timer.getId() == 0) {
        long id = 0;
        for (Timer t : timers.keySet()) {
            if (t.getId() > id) {
                id = t.getId();
            }
        }
        timer.setId(++id);
    }
    timers.put(timer, action);
}
Also used : DroolsAction(org.jbpm.workflow.core.DroolsAction) Timer(org.jbpm.process.core.timer.Timer)

Aggregations

Timer (org.jbpm.process.core.timer.Timer)25 DroolsConsequenceAction (org.jbpm.workflow.core.impl.DroolsConsequenceAction)11 TimerNode (org.jbpm.workflow.core.node.TimerNode)8 DroolsAction (org.jbpm.workflow.core.DroolsAction)7 StartNode (org.jbpm.workflow.core.node.StartNode)6 ActionNode (org.jbpm.workflow.core.node.ActionNode)5 EndNode (org.jbpm.workflow.core.node.EndNode)5 EventNode (org.jbpm.workflow.core.node.EventNode)4 StateBasedNode (org.jbpm.workflow.core.node.StateBasedNode)4 ArrayList (java.util.ArrayList)3 EventTypeFilter (org.jbpm.process.core.event.EventTypeFilter)3 RuleFlowProcess (org.jbpm.ruleflow.core.RuleFlowProcess)3 ConnectionImpl (org.jbpm.workflow.core.impl.ConnectionImpl)3 DynamicNode (org.jbpm.workflow.core.node.DynamicNode)3 EventSubProcessNode (org.jbpm.workflow.core.node.EventSubProcessNode)3 EventTrigger (org.jbpm.workflow.core.node.EventTrigger)3 HashMap (java.util.HashMap)2 KnowledgeBuilderImpl (org.drools.compiler.builder.impl.KnowledgeBuilderImpl)2 Work (org.jbpm.process.core.Work)2 TimerInstance (org.jbpm.process.instance.timer.TimerInstance)2