001: /*--
002:
003: Copyright (C) 2002-2005 Adrian Price.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The names "OBE" and "Open Business Engine" must not be used to
019: endorse or promote products derived from this software without prior
020: written permission. For written permission, please contact
021: adrianprice@sourceforge.net.
022:
023: 4. Products derived from this software may not be called "OBE" or
024: "Open Business Engine", nor may "OBE" or "Open Business Engine"
025: appear in their name, without prior written permission from
026: Adrian Price (adrianprice@users.sourceforge.net).
027:
028: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
029: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
030: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
031: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
032: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
033: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
034: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
036: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
037: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
038: POSSIBILITY OF SUCH DAMAGE.
039:
040: For more information on OBE, please see
041: <http://obe.sourceforge.net/>.
042:
043: */
044:
045: package org.obe.engine.persistence.memory;
046:
047: import org.obe.spi.model.*;
048: import org.wfmc.wapi.WMActivityInstanceState;
049:
050: import java.util.ArrayList;
051: import java.util.Collection;
052: import java.util.Date;
053:
054: /**
055: * Holds the persistent state of an activity instance.
056: *
057: * @author Adrian Price
058: */
059: public class BasicActivityInstance extends BasicAttributedEntity
060: implements ActivityInstance {
061:
062: private static final String[] EMPTY_PARTICIPANTS = {};
063: private final ProcessInstance _processInstance;
064: private final String _activityDefinitionId;
065: private final String _blockActivityInstanceId;
066: private final PersistentIterator _blockActivityIterator;
067: private final JoinInstance _join;
068: private int _state;
069: private int _priority;
070: private Date _startedDate;
071: private Date _completedDate;
072: private Date _targetDate;
073: private Date _dueDate;
074: private String _name;
075: private String[] _participants = EMPTY_PARTICIPANTS;
076: private final Collection _workItems = new ArrayList();
077: private final Collection _childProcesses = new ArrayList();
078:
079: public BasicActivityInstance(String processDefinitionId,
080: ProcessInstance processInstance,
081: String activityDefinitionId, String activityInstanceId,
082: JoinInstance join, String blockActivityInstanceId,
083: PersistentIterator blockActivityIterator) {
084:
085: super (ActivityInstance.propertyDescriptors,
086: processDefinitionId, processInstance
087: .getProcessInstanceId(), activityInstanceId);
088: _processInstance = processInstance;
089: _activityDefinitionId = activityDefinitionId;
090: _join = join;
091: _blockActivityInstanceId = blockActivityInstanceId;
092: _blockActivityIterator = blockActivityIterator;
093: }
094:
095: protected int getType() {
096: return ACTIVITY_INSTANCE_TYPE;
097: }
098:
099: public String getActivityDefinitionId() {
100: return _activityDefinitionId;
101: }
102:
103: public String getActivityInstanceId() {
104: return _entityId;
105: }
106:
107: public String getBlockActivityInstanceId() {
108: return _blockActivityInstanceId;
109: }
110:
111: public PersistentIterator getBlockActivityIterator() {
112: return _blockActivityIterator;
113: }
114:
115: public Collection getChildProcessInstances() {
116: return _childProcesses;
117: }
118:
119: public void addChildProcessInstance(ProcessInstance processInstance) {
120: _childProcesses.add(processInstance);
121: }
122:
123: public int getState() {
124: return _state;
125: }
126:
127: public void setState(int state) {
128: _state = state;
129: }
130:
131: public int getPriority() {
132: return _priority;
133: }
134:
135: public void setPriority(int priority) {
136: _priority = priority;
137: }
138:
139: public Date getStartedDate() {
140: return _startedDate;
141: }
142:
143: public void setStartedDate(Date startedDate) {
144: _startedDate = startedDate;
145: }
146:
147: public Date getCompletedDate() {
148: return _completedDate;
149: }
150:
151: public void setCompletedDate(Date completedDate) {
152: _completedDate = completedDate;
153: }
154:
155: public Date getTargetDate() {
156: return _targetDate;
157: }
158:
159: public void setTargetDate(Date targetDate) {
160: _targetDate = targetDate;
161: }
162:
163: public Date getDueDate() {
164: return _dueDate;
165: }
166:
167: public void setDueDate(Date dueDate) {
168: _dueDate = dueDate;
169: }
170:
171: public JoinInstance getJoin() {
172: return _join;
173: }
174:
175: public String getName() {
176: return _name;
177: }
178:
179: public void setName(String name) {
180: _name = name;
181: }
182:
183: public String[] getParticipants() {
184: return _participants;
185: }
186:
187: public void setParticipants(String[] participants) {
188: _participants = participants;
189: }
190:
191: public ProcessInstance getProcessInstance() {
192: return _processInstance;
193: }
194:
195: public Collection getWorkItems() {
196: return _workItems;
197: }
198:
199: public void addWorkItem(WorkItem workItem) {
200: _workItems.add(workItem);
201: }
202:
203: public String toString() {
204: return "ActivityInstance[activityInstanceId='"
205: + _entityId
206: + "', activityDefinitionId='"
207: + _activityDefinitionId
208: + "', processInstanceId='"
209: + _processInstanceId
210: + "', processDefinitionId='"
211: + _processDefinitionId
212: + ", state="
213: + WMActivityInstanceState.valueOf(_state).stringValue()
214: + ", priority="
215: + _priority
216: + ", startedDate="
217: + _startedDate
218: + ", completedDate="
219: + _completedDate
220: + ", dueDate="
221: + _dueDate
222: + ", join="
223: + _join
224: + ", name='"
225: + _name
226: + "', blockActivityInstanceId="
227: + (_blockActivityInstanceId == null ? null
228: : '\'' + _blockActivityInstanceId + '\'')
229: + "']";
230: }
231: }
|