01: package org.drools.ruleflow.instance.impl;
02:
03: /*
04: * Copyright 2005 JBoss Inc
05: *
06: * Licensed under the Apache License, Version 2.0 (the "License");
07: * you may not use this file except in compliance with the License.
08: * You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18:
19: import org.drools.ruleflow.common.instance.ProcessInstance;
20: import org.drools.ruleflow.core.SubFlowNode;
21: import org.drools.ruleflow.instance.RuleFlowNodeInstance;
22:
23: /**
24: * Runtime counterpart of a SubFlow node.
25: *
26: * @author <a href="mailto:kris_verlaenen@hotmail.com">Kris Verlaenen</a>
27: */
28: public class SubFlowNodeInstanceImpl extends RuleFlowNodeInstanceImpl {
29:
30: private long processInstanceId;
31:
32: protected SubFlowNode getSubFlowNode() {
33: return (SubFlowNode) getNode();
34: }
35:
36: public void trigger(final RuleFlowNodeInstance from) {
37: ProcessInstance processInstance = getProcessInstance()
38: .getWorkingMemory().startProcess(
39: getSubFlowNode().getProcessId());
40: if (processInstance.getState() == ProcessInstance.STATE_COMPLETED) {
41: triggerCompleted();
42: } else {
43: this .processInstanceId = processInstance.getId();
44: }
45: }
46:
47: public long getProcessInstanceId() {
48: return processInstanceId;
49: }
50:
51: public void triggerCompleted() {
52: getProcessInstance().getNodeInstance(
53: getSubFlowNode().getTo().getTo()).trigger(this);
54: getProcessInstance().removeNodeInstance(this);
55: }
56:
57: }
|