Source code: domain/VolatileProcess.java
1 /*
2 * This file is part of the WfMCore/WfMOpen project.
3 * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
4 * All rights reserved.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * $Id: VolatileProcess.java,v 1.38 2003/09/24 15:19:09 lipp Exp $
21 *
22 * $Log: VolatileProcess.java,v $
23 * Revision 1.38 2003/09/24 15:19:09 lipp
24 * Updated to interface changes.
25 *
26 * Revision 1.37 2003/09/22 12:56:53 lipp
27 * Fixed key creation for block activity (must be unique).
28 *
29 * Revision 1.36 2003/09/21 21:28:14 lipp
30 * Introducing "virtual" block activity.
31 *
32 * Revision 1.35 2003/06/27 09:44:13 lipp
33 * Fixed copyright/license information.
34 *
35 * Revision 1.34 2003/05/31 20:05:25 lipp
36 * Added support for different condition types.
37 *
38 * Revision 1.33 2003/05/16 08:08:49 lipp
39 * Handling OTHERWISE condition type.
40 *
41 * Revision 1.32 2003/05/14 13:05:06 lipp
42 * Made creator of subprocess inherited attribute.
43 *
44 * Revision 1.31 2003/05/08 08:14:17 lipp
45 * Adapted to changes.
46 *
47 * Revision 1.30 2003/05/05 14:39:50 lipp
48 * Moved code for removing process automatically to event handling.
49 *
50 * Revision 1.29 2003/05/05 07:04:51 lipp
51 * Handling parameters for sub-flow now.
52 *
53 * Revision 1.28 2003/04/26 16:12:35 lipp
54 * Moved some classes to reduce package dependencies.
55 *
56 * Revision 1.27 2003/04/19 18:33:28 lipp
57 * Improved handling of info.
58 *
59 * Revision 1.26 2003/02/03 10:09:27 lipp
60 * Adapted to latest changes in src.
61 *
62 * Revision 1.25 2002/11/26 11:23:29 lipp
63 * Modified RemoteException comment.
64 *
65 * Revision 1.24 2002/11/25 21:16:23 lipp
66 * Adapted to transition interface changes.
67 *
68 * Revision 1.23 2002/11/15 15:13:54 lipp
69 * Clarified usage of transitions as attribute. Included in caching.
70 *
71 * Revision 1.22 2002/11/04 08:40:25 barzik
72 * adapted to several modifications in the workflow component
73 *
74 * Revision 1.21 2002/10/21 19:08:05 lipp
75 * Continuing implementation of new state handling.
76 *
77 * Revision 1.20 2002/10/21 11:54:23 lipp
78 * Better suspend state handling.
79 *
80 * Revision 1.19 2002/10/18 13:46:02 lipp
81 * Getting on with adaptions...
82 *
83 * Revision 1.18 2002/10/09 14:27:33 lipp
84 * Intermediate, compilable state.
85 *
86 * Revision 1.17 2002/10/09 07:30:29 lipp
87 * log fire events as debug.
88 *
89 * Revision 1.16 2002/10/08 15:32:39 lipp
90 * Providing base implementations for more methods in AbstractActivity.
91 *
92 * Revision 1.15 2002/10/02 21:23:25 lipp
93 * Some adaptations.
94 *
95 * Revision 1.14 2002/09/17 06:53:17 huaiyang
96 * Do not use super.init(null).
97 *
98 * Revision 1.13 2002/08/30 11:38:51 lipp
99 * Added create time as process method.
100 *
101 * Revision 1.12 2002/08/30 09:06:40 lipp
102 * Renamed internal state to typed state and use polymorphism for type
103 * names where possible.
104 *
105 * Revision 1.11 2002/08/30 07:58:19 huaiyang
106 * Separation of Domain class and persistent class more cleaner.
107 *
108 * Revision 1.10 2002/08/29 20:55:34 lipp
109 * Added last state time persistence and process create time.
110 *
111 * Revision 1.9 2002/08/29 14:33:17 huaiyang
112 * Use createTransitionRef.
113 *
114 * Revision 1.8 2002/08/29 11:00:45 huaiyang
115 * Move operation methods towards domain for new style of procDefSpec.
116 *
117 * Revision 1.7 2002/08/28 15:04:34 huaiyang
118 * New methods in AbstractProcess.
119 *
120 * Revision 1.6 2002/08/28 12:58:03 lipp
121 * Fixed unittests.
122 *
123 * Revision 1.5 2002/08/28 12:47:20 lipp
124 * Starting new process generation.
125 *
126 * Revision 1.4 2002/08/28 09:54:51 lipp
127 * Moving domain logic to domain package...
128 *
129 * Revision 1.3 2002/08/27 11:36:37 lipp
130 * Better use of ProcessDefinition.
131 *
132 * Revision 1.2 2002/08/25 20:55:54 lipp
133 * Clearing up use of ProcessDefinition.
134 *
135 * Revision 1.1 2002/08/22 15:19:34 lipp
136 * Redesign of EJB persistence.
137 *
138 */
139 package domain;
140
141 import java.io.Serializable;
142
143 import java.util.ArrayList;
144 import java.util.Collection;
145 import java.util.Date;
146 import java.util.HashMap;
147 import java.util.List;
148 import java.util.Map;
149
150 import java.rmi.RemoteException;
151 import java.security.Principal;
152
153 import org.jdom.Element;
154
155 import de.danet.an.workflow.omgcore.CannotChangeRequesterException;
156 import de.danet.an.workflow.omgcore.InvalidPerformerException;
157 import de.danet.an.workflow.omgcore.ProcessData;
158 import de.danet.an.workflow.omgcore.WfActivity;
159 import de.danet.an.workflow.omgcore.WfAuditEvent;
160 import de.danet.an.workflow.omgcore.WfProcess;
161 import de.danet.an.workflow.omgcore.WfProcessMgr;
162 import de.danet.an.workflow.omgcore.WfRequester;
163
164 import de.danet.an.workflow.api.Activity;
165 import de.danet.an.workflow.api.Activity.JoinAndSplitMode;
166 import de.danet.an.workflow.api.InvalidKeyException;
167 import de.danet.an.workflow.api.Process;
168 import de.danet.an.workflow.api.ProcessDefinition;
169 import de.danet.an.workflow.api.ProcessDefinitionDirectory;
170 import de.danet.an.workflow.api.Transition;
171
172 import de.danet.an.workflow.domain.AbstractProcess;
173 import de.danet.an.workflow.domain.TransitionDefinition;
174
175 import de.danet.an.workflow.apix.ExtActivity;
176
177 /**
178 * This class implements the persistance layer required by
179 * <code>AbstractProcess</code> by, well, providing no
180 * persistence ...
181 *
182 * @author <a href="mailto:lipp@danet.de"></a>
183 * @version $Revision: 1.38 $
184 */
185
186 public class VolatileProcess extends AbstractProcess {
187 /** Persistent attribute <code>id</code>. */
188 private String paId;
189
190 /** Persistent attribute <code>key</code>. */
191 private String paKey;
192
193 /** Persistent attribute <code>name</code>. */
194 private String paName;
195
196 /** Persistent attribute <code>createTime</code>. */
197 private Date paCreateTime = new Date();
198
199 /** Persistent attribute <code>description</code>. */
200 private String paDescription;
201
202 /** Persistent attribute <code>priority</code>. */
203 private Priority paPriority = Priority.NORMAL;
204
205 /** Persistent attribute <code>typedState</code>. */
206 private State paTypedState;
207
208 /** Persistent attribute <code>lastStateTime</code>. */
209 private Date paLastStateTime;
210
211 /** Persistent attribute <code>processMgr</code>. */
212 private String paProcessMgr;
213
214 /** Persistent attribute <code>requester</code>. */
215 private WfRequester paRequester;
216
217 /** Persistent attribute <code>processDef</code>. */
218 private ProcessDefinition paProcessDef;
219
220 /** Persistent attribute <code>processData</code>. */
221 private ProcessData paProcessData;
222
223 /** Persistent attribute <code>processMgrName</code>. */
224 private String paProcessMgrName;
225
226 /** Persistent attribute <code>processMgrVersion</code>. */
227 private String paProcessMgrVersion;
228
229 // normal attributes
230 private Collection activities = new ArrayList();
231 private WfProcessMgr pmgr = new VolatileMgr ();
232
233 private static int procKeyGen = 1;
234
235 private List transitions = new ArrayList();
236
237 /**
238 * Creates an instance of <code>TestProcess</code>
239 * with all attributes initialized to default values.
240 * @param key a <code>String</code> value
241 */
242 public VolatileProcess (String key) {
243 setPaLastStateTime (new Date());
244 setPaPriority (Priority.NORMAL);
245 setPaTypedState (NotRunningState.NOT_STARTED);
246 paKey = key;
247 }
248
249 /**
250 * Creates an instance of <code>TestProcess</code>
251 * with all attributes initialized to default values.
252 */
253 public VolatileProcess () {
254 this (Integer.toString(procKeyGen++));
255 }
256
257 /**
258 * Describe <code>thisRemote</code> method here.
259 *
260 * @return a <code>Process</code> value
261 */
262 protected Process thisRemote () {
263 return this;
264 }
265
266 /**
267 * Remove this process.
268 */
269 protected void removeThis () {
270 }
271
272 /**
273 * Returns the process manager which created this process.
274 * @return the associated process manager.
275 * @throws RemoteException if a system-level error occurs.
276 */
277 public WfProcessMgr manager () throws RemoteException {
278 return pmgr;
279 }
280
281 //
282 // Implement abstract methods as unsupported
283 //
284
285 /**
286 * Describe <code>createTime</code> method here.
287 *
288 * @return a <code>Date</code> value
289 */
290 public Date createTime () {
291 return getPaCreateTime();
292 }
293
294 /**
295 * Return the creator of the process.
296 * @return the process creator.
297 */
298 public Principal processCreator() {
299 return null;
300 }
301
302 /**
303 * Describe <code>setActivities</code> method here.
304 *
305 * @param act a <code>Collection</code> value
306 */
307 public void setActivities(Collection act) {
308 activities = act;
309 }
310
311 /**
312 * Describe <code>addActivity</code> method here.
313 *
314 * @param act an <code>Activity</code> value
315 */
316 public void addActivity(Activity act) {
317 activities.add(act);
318 }
319
320 /**
321 * Describe <code>addTransition</code> method here.
322 *
323 * @param id a <code>String</code> value
324 * @param from an <code>Activity</code> value
325 * @param to an <code>Activity</code> value
326 */
327 public void addTransition(String id, String group, int order,
328 Activity from, Activity to) {
329 addTransition(id, group, order, from, to, null);
330 }
331
332 /**
333 * Describe <code>addTransition</code> method here.
334 *
335 * @param id a <code>String</code> value
336 * @param from an <code>Activity</code> value
337 * @param to an <code>Activity</code> value
338 * @param cond condition.
339 */
340 public void addTransition(String id, String group, int order,
341 Activity from, Activity to, String cond) {
342 doCreateTransition(id, group, order, from, to,
343 Transition.COND_TYPE_CONDITION, cond);
344 }
345
346 /**
347 * Gets a list of transitions for this process.
348 * The method is public, because the transition manager needs
349 * access to the transitions of a process.
350 * @return list of transitions for this process
351 * @throws RemoteException if a system-level error occurs.
352 */
353 public List transitions() throws RemoteException {
354 return transitions;
355 }
356
357 /**
358 * Provide a new unique activity key.
359 *
360 * @return the key.
361 */
362 protected Long createActivityKey () {
363 throw new UnsupportedOperationException ();
364 }
365
366 /**
367 * Describe <code>createActivity</code> method here.
368 *
369 * @param actElement an <code>Element</code> value
370 * @param jm a <code>JoinAndSplitMode</code> value
371 * @param sm a <code>JoinAndSplitMode</code> value
372 * @return a <code>WfActivity</code> value
373 */
374 protected WfActivity createActivity
375 (Element actElement, Long blockId,
376 JoinAndSplitMode jm, JoinAndSplitMode sm) {
377 throw new UnsupportedOperationException();
378 }
379
380 /**
381 * Describe <code>requester</code> method here.
382 *
383 * @return a <code>WfRequester</code> value
384 * @exception RemoteException if an error occurs
385 */
386 public WfRequester requester() throws RemoteException {
387 return new WfRequester () {
388 public Collection performers() throws RemoteException {
389 throw new UnsupportedOperationException();
390 }
391 public boolean isMemberOfPerformers(WfProcess member)
392 throws RemoteException {
393 throw new UnsupportedOperationException();
394 }
395 public void receiveEvent (WfAuditEvent e)
396 throws InvalidPerformerException, RemoteException {
397 throw new UnsupportedOperationException();
398 }
399 };
400 }
401
402 /**
403 * Return the process definition directory.
404 * While there is no immediate relation between a process
405 * instance and the known process definitions, the definitions
406 * nevertheless make up part of the environment of a process.
407 * Specifically, this method is needed to start a sub-process
408 * in an activity.
409 * @return the process definition directory
410 * @throws RemoteException if a system level error occurs.
411 */
412 public ProcessDefinitionDirectory processDefinitionDirectory () {
413 throw new UnsupportedOperationException();
414 }
415
416 /**
417 * Describe <code>getXPDL</code> method here.
418 *
419 * @return a <code>String</code> value
420 */
421 public String getXPDL() {
422 throw new UnsupportedOperationException();
423 }
424
425 /**
426 * Describe <code>steps</code> method here.
427 *
428 * @return a <code>Collection</code> value
429 */
430 public Collection steps() {
431 return activities;
432 }
433
434 /**
435 * Describe <code>processDefinition</code> method here.
436 *
437 * @return a <code>ProcessDefinition</code> value
438 * @exception RemoteException if an error occurs
439 */
440 public ProcessDefinition processDefinition() throws RemoteException {
441 throw new UnsupportedOperationException();
442 }
443
444 /**
445 * Returns <code>true</code> if the process will be removed automatically
446 * on completion.
447 */
448 public boolean removeOnClose () throws RemoteException {
449 return false;
450 }
451
452 /**
453 * Describe <code>history</code> method here.
454 *
455 * @return a <code>Collection</code> value
456 * @exception RemoteException if an error occurs
457 */
458 public Collection history() throws RemoteException {
459 throw new UnsupportedOperationException();
460 }
461
462 /**
463 * Describe <code>setRequester</code> method here.
464 *
465 * @param requester a <code>WfRequester</code> value
466 * @exception RemoteException if an error occurs
467 * @exception CannotChangeRequesterException if an error occurs
468 */
469 public void setRequester(WfRequester requester)
470 throws RemoteException,
471 CannotChangeRequesterException {
472 throw new UnsupportedOperationException();
473 }
474
475 /**
476 * Describe <code>activityByKey</code> method here.
477 *
478 * @param key a <code>String</code> value
479 * @return an <code>Activity</code> value
480 * @exception RemoteException if an error occurs
481 * @exception InvalidKeyException if an error occurs
482 */
483 public Activity activityByKey (String key) throws
484 RemoteException, InvalidKeyException {
485 throw new UnsupportedOperationException();
486 }
487
488 /**
489 * Return an arbitrary activity with the given key. The activity
490 * need not belong to this process.
491 * @param key activity key
492 * @return the activity
493 * @throws InvalidKeyException if the activity cannot be found
494 */
495 protected ExtActivity lookupActivity (String key)
496 throws InvalidKeyException {
497 throw new UnsupportedOperationException();
498 }
499
500 /**
501 * Describe <code>processContext</code> method here.
502 *
503 * @return a <code>ProcessData</code> value
504 * @exception RemoteException if an error occurs
505 */
506 public ProcessData processContext () throws RemoteException {
507 throw new UnsupportedOperationException();
508 }
509
510 /**
511 * Describe <code>complete</code> method here.
512 *
513 * @param activity a <code>Long</code> value
514 * @param s a <code>State</code> value
515 */
516 public void complete (Long activity, State s) {
517 throw new UnsupportedOperationException();
518 }
519
520 /**
521 * Describe <code>createTransitionRef</code> method here.
522 *
523 * @param serialNum a <code>long</code> value
524 * @param fromActivity an <code>Activity</code> value
525 * @param toActivity an <code>Activity</code> value
526 */
527 protected void createTransitionRef
528 (long serialNum, Activity fromActivity, Activity toActivity) {
529 throw new UnsupportedOperationException();
530 }
531
532 /**
533 * Create a new transition with given id, From Activity, To Activity.
534 * @param id a <code>String</code> value
535 * @param fromAct an <code>Activity</code> value
536 * @param toAct an <code>Activity</code> value
537 * @return the created transition.
538 */
539 protected Transition createTransition
540 (String id, String group, int order, Activity fromAct,
541 Activity toAct) {
542 return doCreateTransition (id,group,order,fromAct,toAct,
543 Transition.COND_TYPE_CONDITION,null);
544 }
545
546 /**
547 * Create a new transition with given id, From Activity, To Activity.
548 * @param id a <code>String</code> value
549 * @param fromAct an <code>Activity</code> value
550 * @param toAct an <code>Activity</code> value
551 * @param cond condition.
552 * @return the created transition.
553 */
554 protected Transition doCreateTransition
555 (String id, String group, int order, Activity fromAct,
556 Activity toAct, int condType, String cond) {
557 Transition trans = new TransitionDefinition
558 (paKey,id,group,order,fromAct,toAct,condType,cond);
559 transitions.add(trans);
560 return trans;
561 }
562
563 /**
564 * Describe <code>activityRequesterInfo</code> method here.
565 *
566 * @param req a <code>WfRequester</code> value
567 * @return a <code>WfAuditEvent</code> value
568 */
569 protected WfAuditEvent activityRequesterInfo(WfRequester req) {
570 throw new UnsupportedOperationException();
571 }
572
573 /**
574 * Returns an audit event object with process relevant information
575 * initialized.
576 * @return the process related information.
577 */
578 public WfAuditEvent auditEventBase() {
579 return auditEventBase(null);
580 }
581
582 /**
583 * Start a timer that will call <code>handleTimeout</code> at the
584 * given date with the given info.
585 * @param due target date
586 * @param info the context
587 */
588 public void startTimer (Date due, Serializable info) {
589 }
590
591 /**
592 * Stop all timers that this object has created.
593 */
594 public void stopTimers () {
595 }
596
597 //
598 // Implement accessor methods for the persistent attributes
599 //
600
601 /**
602 * The getter method implementation for the persistent
603 * attribute <code>key</code>.
604 *
605 * @return the value of key.
606 */
607 protected String getPaKey() {
608 return paKey;
609 }
610
611 /**
612 * The getter method implementation for the persistent
613 * attribute <code>name</code>.
614 *
615 * @return the value of name.
616 * @see #setPaName
617 */
618 protected String getPaName() {
619 return paName;
620 }
621
622 /**
623 * The setter method implementation for the persistent
624 * attribute <code>name</code>.
625 *
626 * @param newName the new value of name.
627 * @see #getPaName
628 */
629 protected void setPaName(String newName) {
630 paName = newName;
631 }
632
633 /**
634 * The getter method implementation for the persistent
635 * attribute <code>description</code>.
636 *
637 * @return the value of description.
638 * @see #setPaDescription
639 */
640 protected String getPaDescription() {
641 return paDescription;
642 }
643
644 /**
645 * The setter method implementation for the persistent
646 * attribute <code>description</code>.
647 *
648 * @param newDescription the new value of description.
649 * @see #getPaDescription
650 */
651 protected void setPaDescription(String newDescription) {
652 paDescription = newDescription;
653 }
654
655 /**
656 * The getter method implementation for the persistent
657 * attribute <code>priority</code>.
658 *
659 * @return the value of priority.
660 * @see #setPaPriority
661 */
662 protected Priority getPaPriority() {
663 return paPriority;
664 }
665
666 /**
667 * The setter method implementation for the persistent
668 * attribute <code>priority</code>.
669 *
670 * @param newPriority the new value of priority.
671 * @see #getPaPriority
672 */
673 protected void setPaPriority(Priority newPriority) {
674 paPriority = newPriority;
675 }
676
677 /**
678 * The getter method implementation for the persistent
679 * attribute <code>typedState</code>.
680 *
681 * @return the value of typedState.
682 * @see #setPaTypedState
683 */
684 protected State getPaTypedState() {
685 return paTypedState;
686 }
687
688 /**
689 * The getter method implementation for the persistent
690 * attribute <code>lastStateTime</code>.
691 *
692 * @return the value of lastStateTime.
693 * @see #setPaLastStateTime
694 */
695 protected Date getPaLastStateTime() {
696 return paLastStateTime;
697 }
698
699 /**
700 * The setter method implementation for the persistent
701 * attribute <code>lastStateTime</code>.
702 *
703 * @param newLastStateTime the new value of lastStateTime.
704 * @see #getPaLastStateTime
705 */
706 protected void setPaLastStateTime(Date newLastStateTime) {
707 paLastStateTime = newLastStateTime;
708 }
709
710 /**
711 * The setter method implementation for the persistent
712 * attribute <code>typedState</code>.
713 *
714 * @param newTypedState the new value of typedState.
715 * @see #getPaTypedState
716 */
717 protected void setPaTypedState(State newTypedState) {
718 paTypedState = newTypedState;
719 }
720
721 /**
722 * The getter method implementation for the persistent
723 * attribute <code>processMgr</code>.
724 *
725 * @return the value of processMgr.
726 * @see #setPaProcessMgr
727 */
728 protected String getPaProcessMgr() {
729 return paProcessMgr;
730 }
731
732 /**
733 * The setter method implementation for the persistent
734 * attribute <code>processMgr</code>.
735 *
736 * @param newProcessMgr the new value of processMgr.
737 * @see #getPaProcessMgr
738 */
739 protected void setPaProcessMgr(String newProcessMgr) {
740 paProcessMgr = newProcessMgr;
741 }
742
743 /**
744 * The getter method implementation for the persistent
745 * attribute <code>requester</code>.
746 *
747 * @return the value of requester.
748 * @see #setPaRequester
749 */
750 protected WfRequester getPaRequester() {
751 return paRequester;
752 }
753
754 /**
755 * The setter method implementation for the persistent
756 * attribute <code>requester</code>.
757 *
758 * @param newRequester the new value of requester.
759 * @see #getPaRequester
760 */
761 protected void setPaRequester(WfRequester newRequester) {
762 paRequester = newRequester;
763 }
764
765 /**
766 * The getter method implementation for the persistent
767 * attribute <code>processDef</code>.
768 *
769 * @return the value of processDef.
770 * @see #setPaProcessDef
771 */
772 protected ProcessDefinition getPaProcessDef() {
773 return paProcessDef;
774 }
775
776 /**
777 * The setter method implementation for the persistent
778 * attribute <code>processDef</code>.
779 *
780 * @param newProcessDef the new value of processDef.
781 * @see #getPaProcessDef
782 */
783 protected void setPaProcessDef(ProcessDefinition newProcessDef) {
784 paProcessDef = newProcessDef;
785 }
786
787 /**
788 * The getter method implementation for the persistent
789 * attribute <code>processData</code>.
790 *
791 * @return the value of processData.
792 * @see #setPaProcessData
793 */
794 protected ProcessData getPaProcessData() {
795 return paProcessData;
796 }
797
798 /**
799 * The setter method implementation for the persistent
800 * attribute <code>processData</code>.
801 *
802 * @param newProcessData the new value of processData.
803 * @see #getPaProcessData
804 */
805 protected void setPaProcessData(ProcessData newProcessData) {
806 paProcessData = newProcessData;
807 }
808
809 /**
810 * The getter method implementation for the persistent
811 * attribute <code>processMgrName</code>.
812 *
813 * @return the value of processMgrName.
814 * @see #setPaProcessMgrName
815 */
816 protected String getPaProcessMgrName() {
817 return paProcessMgrName;
818 }
819
820 /**
821 * The setter method implementation for the persistent
822 * attribute <code>processMgrName</code>.
823 *
824 * @param newProcessMgrName the new value of processMgrName.
825 * @see #getPaProcessMgrName
826 */
827 protected void setPaProcessMgrName(String newProcessMgrName) {
828 paProcessMgrName = newProcessMgrName;
829 }
830
831 /**
832 * The getter method implementation for the persistent
833 * attribute <code>processMgrVersion</code>.
834 *
835 * @see #setPaProcessMgrVersion
836 * @return the value of processMgrVersion.
837 */
838 protected String getPaProcessMgrVersion() {
839 return paProcessMgrVersion;
840 }
841
842 /**
843 * The setter method implementation for the persistent
844 * attribute <code>processMgrVersion</code>.
845 *
846 * @param newProcessMgrVersion the new value of processMgrVersion.
847 * @see #getPaProcessMgrVersion
848 */
849 protected void setPaProcessMgrVersion(String newProcessMgrVersion) {
850 paProcessMgrVersion = newProcessMgrVersion;
851 }
852
853 /**
854 * The getter method for the persistent attribute <code>id</code>.
855 *
856 * @return the value of process id.
857 * @see #setPaId
858 */
859 protected String getPaId() {
860 return paId;
861 }
862
863 /**
864 * The setter method for the persistent attribute <code>Id</code>.
865 *
866 * @param newId the new value of process id.
867 * @see #getPaId
868 */
869 protected void setPaId(String newId) {
870 paId = newId;
871 }
872
873 /**
874 * The getter method implementation for the persistent
875 * attribute <code>createTime</code>.
876 *
877 * @return the value of createTime.
878 * @see #setPaCreateTime
879 */
880 protected Date getPaCreateTime() {
881 return paCreateTime;
882 }
883
884 /**
885 * The getter method implementation for the persistent
886 * attribute <code>blockDeadlines</code>.
887 *
888 * @see #setPaBlockDeadlines
889 * @return the value of blockDeadlines.
890 */
891 protected Map getPaBlockDeadlines() {
892 return new HashMap ();
893 }
894
895 }