锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成电影网站色,亚洲三级中文字幕,亚洲国产小视频精品久久久三级 http://www.tkk7.com/javaora/archive/2005/06/22/6524.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Wed, 22 Jun 2005 03:54:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/22/6524.htmlhttp://www.tkk7.com/javaora/comments/6524.htmlhttp://www.tkk7.com/javaora/archive/2005/06/22/6524.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/6524.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6524.html<!--

jbpm.db build script  (jbpm.db 緙栬瘧鑴氭湰)
====================

The jbm.db build script consists of a few major sections(jbpm.db 緙栬瘧鑴氭湰鍖呭惈涓浜涗富瑕侀儴鍒?:

- general setup 錛堟櫘閫氬畨瑁咃級
- common tasks   錛堝叕鐢ㄤ換鍔★級
- database specific tasks 錛堟暟鎹簱鐗瑰畾浠誨姟錛?/P>

A database specific task calls common tasks with the database name as a parameter
and carries out its duties. (涓涓暟鎹簱鐗瑰畾浠誨姟璋冪敤鍏湁鐨勪換鍔′嬌鐢ㄦ暟鎹簱鍚嶄綔涓轟竴涓弬鏁幫紝騫朵笖鎵ц瀹冪殑鑱岃矗銆?

The main tasks are the database script creation and the database test run.錛堜富瑕佺殑浠誨姟鏄暟鎹簱鑴氭湰鍒涘緩鍜屾暟鎹簱嫻嬭瘯榪愯錛?/P>

Following is a explanation of the flow for both. They start off with the same steps.
The explanation with use hsqldb as an example.錛堜笅闈㈡槸涓涓祦紼嬬殑璇存槑銆備粬浠紑濮嬩嬌鐢ㄥ悓鏍風殑姝ラ錛?/P>

1. "prepare" target compiles all jbpm.3 classes ("prepare" 鐩爣緙栬瘧鎵鏈夌殑jbpm3.classes )
2. "hsqldb.prepare" target calls the "db.prepare" target with the parameter "hsqldb" ("hsqldb.prepare" 鐩爣璋冪敤"db.prepare"鐩爣浣跨敤"hsqldb"鍙傛暟)
3. "db.prepare" copies the resources tree from the jbpm.3 project and ()
4. sources the property file hsqldb/hibernate.properties and replaces the
   properties from the main project in the copied hibernate config file with
   properties from the file making it database specific to the test settings using
   "hibernate.replace". This differs per database.
   ("db.prepare"浠巎bpm.3欏圭洰鍜?hsqldb/hibernate.properties 灞炴ф枃浠跺鍒惰祫婧愮洰褰曪紝騫朵粠鍦ㄥ鍒剁殑鎷ユ湁浠庢枃浠跺睘鎬х殑hibernate閰嶇疆鏂囦歡涓殑涓婚」鐩浛鎹㈣繖浜涘睘鎬э紝浣跨敤鏁版嵁搴撶壒瀹氱粰test 鐨勮緗嬌鐢?hibernate.replace".榪欏姣忎釜鏁版嵁搴撴槸涓嶅悓鐨?銆?BR>   )

After this preparation the scripts targets 錛堝湪榪欏噯澶囪剼鏈洰鏍囦箣鍚庯級

5. "hsqldb.scripts" target calls the "db.scripts" target with the hsqldb parameter 錛?hsqldb.script"鐩爣璋冪敤"db.script"鐩爣浣跨敤hsqldb 鍙傛暟錛?BR>6. "db.scripts" target creates the scripts files in the build/hsqldb/scripts folder based
   on the db specific hibernate configuration
   ("db.scripts"鐩爣鍒涘緩鑴氭湰鏂囦歡鍦╠b鐗瑰畾hibernate閰嶇疆鏂囦歡鐨刡uild/hsql/scripts/鐩綍 鎴杢est鐩爣鏂囦歡 )
or the the test targets

5. "hsqldb.test" target calls the "db.test" target with the hsqldb parameter ("hsqldb.test" 鐩爣璋冪敤"db.test"鐩爣浣跨敤hsqldb鍙傛暟)
6. "db.test" target runs all tests against the hsqldb database and creates a test report
   in build/hsqldb/testresults
   ("db.test"鐩爣榪愯鎵鏈夌殑嫻嬭瘯 闈犵潃hsqldb 鏁版嵁搴撳拰嫻嬭瘯鎶ュ憡)
-->



java涓栫晫鐣呰皥 2005-06-22 11:54 鍙戣〃璇勮
]]>
jBPM鐨刦orkhttp://www.tkk7.com/javaora/archive/2005/06/16/6211.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Thu, 16 Jun 2005 06:17:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/16/6211.htmlhttp://www.tkk7.com/javaora/comments/6211.htmlhttp://www.tkk7.com/javaora/archive/2005/06/16/6211.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/6211.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6211.html<process-definition name="the fork-in-loop process">
   <swimlane name="initiator"/>
  
   <start-state name="start" swimlane="initiator">
      <transition to="aFork"/>
   </start-state>
  
   <fork name="aFork">
      <transition to="aState"/>
   </fork>
  
   <state name="aState" swimlane="initiator">
       <transition to="aJoin"/>
   </state>
  
   <join name="aJoin">
      <transition to="aFork"/>
   </join>
  
   <end-state name="end"/>
</process-definition>


java涓栫晫鐣呰皥 2005-06-16 14:17 鍙戣〃璇勮
]]>
scheduling鐨刯dpl鐨勪緥瀛?/title><link>http://www.tkk7.com/javaora/archive/2005/06/16/6212.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Thu, 16 Jun 2005 06:17:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/06/16/6212.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/6212.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/06/16/6212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/6212.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/6212.html</trackback:ping><description><![CDATA[<process-definition name="the scheduler process"><BR>    <swimlane name="initiator"/><BR>    <BR>    <start-state name="start" swimlane="initiator"><BR>        <transition to="only state">        <BR>    </start-state><BR>    <BR>    <state name="only state" swimlane="initator"><BR>        <action><BR>           <delegation class="org.jbpm.delegation.action.SchedulerJobActionHandler"><BR>           <job><BR>              <delegation class="org.jbpm.scheduler.LoggingActionHandler"/><BR>              <delay>0</delay> (寤惰繜)<BR>              <name>halleluya</name><BR>           </job><BR>           </delegation><BR>        </action><BR>        <BR>        <action event-type="state-leave"><BR>          <delegation class="org.jbpm.delegation.action.CancelJobActionHandler">halleluya</delegation><BR>        </action><BR>        <BR>        <transition to="end"/><BR>    </state><BR>    <BR>    <end-state name="end"/><BR></process-definition><img src ="http://www.tkk7.com/javaora/aggbug/6212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javaora/" target="_blank">java涓栫晫鐣呰皥</a> 2005-06-16 14:17 <a href="http://www.tkk7.com/javaora/archive/2005/06/16/6212.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>jBPM鐨凞ecision渚嬪瓙http://www.tkk7.com/javaora/archive/2005/06/16/6210.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Thu, 16 Jun 2005 06:14:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/16/6210.htmlhttp://www.tkk7.com/javaora/comments/6210.htmlhttp://www.tkk7.com/javaora/archive/2005/06/16/6210.html#Feedback4http://www.tkk7.com/javaora/comments/commentRss/6210.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6210.html<process-definition name="the decision process">
   <swimlane name="initiator"/>
    
   <start-state name="start" swimlane="initiator">
      <transition to="only descision">
   </start-state>
  
   <decision name="only descision">
      <delegation class="org.jbpm.impl.DecisionTestDecisionHandler"/>
      <transition name="left" to="inside the left street"/>
      <transition name="right" to="inside the right street"/>
   </decision>
  
   <state name="inside the left street" swimlane="initiator">
      <transition to="end"/>
   </state>
  
   <state name="inside the right street" swimlane="initiator">
      <transition to="end"/>
   </state>
  
   <end-state name="end"/>
</process-definition>


java涓栫晫鐣呰皥 2005-06-16 14:14 鍙戣〃璇勮
]]>
娉抽亾銆佷換鍔′簨浠躲佷換鍔″畾鏃跺櫒鍙婅韓浠界粍浠?/title><link>http://www.tkk7.com/javaora/archive/2005/06/15/6159.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Wed, 15 Jun 2005 05:42:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/06/15/6159.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/6159.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/06/15/6159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/6159.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/6159.html</trackback:ping><description><![CDATA[<P>9.4. Swimlanes錛堝拸閬擄級<BR>A swimlane is a process role(瑙掕壊). It is a mechanism to specify that multiple tasks in the process should be done by the same actor.(澶氫釜浠誨姟琚悓涓涓敤鎴鋒墽琛? So after the first task instance is created for a given swimlane, the actor should be remembered in the process for all subsequent錛堝悗鏉ョ殑錛?tasks that are in the same swimlane. A swimlane therefore has one assignment and all tasks that reference a swimlane should not specify an assignment. </P> <P>When the first task in a given swimlane is created, the AssignmentHandler of the swimlane is called. The Assignable that is passed to the AssignmentHandler will be the SwimlaneInstance. Important to know is that all assignments that are done on the task instances in a given swimlane will propagate to the swimlane instance. This behaviour is implemented as the default because the person that takes a task to fulfilling(瀹炶) a certain process role will have the knowledge of that perticular process. So all subsequent(騫跺彂鐨? assignements of task instances to that swimlane are done automatically to that user. </P> <P>Swimlane is a terminology(鏈) borrowed from UML activity(媧誨姩) diagrams. </P> <P>------------------------------------------------------------<BR>9.5. Task events (浠誨姟浜嬩歡)<BR>Tasks can have actions associated with them. There are 4 standard event types defined for tasks: task-create, task-assign, task-start and task-end.</P> <P>(1)task-create<BR> is fired when a task instance is created.</P> <P>(2)task-assign <BR>is fired when a task instance is being assigned. Note that in actions that are executed on this event, you can access the previous actor with executionContext.getTaskInstance().getPreviousActorId(); <BR>executionContext.getTaskInstance().getPreviousActorId();</P> <P>(3)task-start <BR>is fired when TaskInstance.start() is called. This can be used to indicate錛堟寚紺猴級 that the user is actually starting to work on this task instance. Starting a task is optional.</P> <P>(4)task-end<BR> is fired when TaskInstance.end(...) is called. This marks the completion of the task. If the task is related to a process execution, this call might trigger the resuming(鎭㈠) of the process execution. </P> <P>Since tasks can have events and actions associated with them, also exception handlers can be specified on a task. For more information about exception handling, see Section 7.5, 鈥淓xception handling鈥?</P> <P>---------------------------------------------------------------<BR>9.6. Task timers(浠誨姟瀹氭椂鍣?<BR>As on nodes, timers can be specified(鎸囧畾) on tasks. See Section 10.1, 鈥淭imers鈥?</P> <P>The special(鐗瑰埆鐨? thing about timers for tasks is that the cancel-event for task timers can be customized(鍙栨秷浜嬩歡鍙互琚畾鍒?. By default, a timer on a task will be cancelled when the task is ended (=completed). But with the cancel-event attribute on the timer, process developers can customize that to e.g. task-assign or task-start. The cancel-event supports multiple events.|鍙栨秷浜嬩歡鏀寔澶氱浜嬩歡| The cancel-event types can be combined by specifying them in a comma(閫楀彿) separated list in the attribute.</P> <P>9.7. Customizing task instances(瀹氬埗浠誨姟瀹炰緥)<BR>Task instances can be customized. The easiest way to do this is to create a subclass of TaskInstance.|鍒涘緩涓涓換鍔″疄渚嬬殑瀛愮被| Then update the property jbpm.task.instance.class and specify the class name of your custom class that inherits from TaskInstance. Also create a hibernate mapping file for the subclass (using the hibernate extends="org.jbpm.taskmgmt.exe.TaskInstance"). Then add that mapping file to the list of mapping files in the hibernate.cfg.xml<BR>(1)鏇存柊jbpm.task.instance.class 鐨勫睘鎬?BR>(2)鎸囧畾緇ф壙TaskInstance鐨勫畾鍒剁被<BR>(3)鍒涘緩涓涓瓙綾葷殑褰卞皠鏂囦歡(浣跨敤 extends="org.jbpm.taskmgmt.exe.TaskInstance")<BR>(4)灝嗚繖涓獎灝勬枃浠跺姞鍒?hibernate.cfg.xml</P> <P>9.8. The identity component(韜喚緇勪歡)<BR>Management of users, groups and permissions is commonly known as identity management. jBPM includes an optional identity component that can be easily replaced by a company's own identity data store. </P> <P>The jBPM identity management component includes knowledge of the organisational model. Task assignment is typically done with organisational knowledge. So this implies knowledge of an organisational model, describing the users, groups, systems and the relations between them. Optionally, permissions and roles can be included too in an organisational model. Various academic(鐞嗚鐨? research attempts failed, proving that no generic organisational model can be created that fits every organisation. </P> <P>The way jBPM handles this is by defining an actor as an actual participant(鍙備笌鑰? in a process. An actor is identified by its ID called an actorId. jBPM has only knowledge(鐭ラ亾) about actorId's and they are represented as java.lang.Strings for maximum flexibility. So any knowledge about the organisational model and the structure of that data is outside the scope of the jBPM core engine.</P> <P>As an extension to jBPM we will provide (in the future) a component to manage that simple user-roles model. This many to many relation between users and roles is the same model as is defined in the J2EE and the servlet specs and it could serve as a starting point in new developments. People interested in contributing should check the jboss jbpm jira issue tracker for more details. 鐢ㄦ埛鍜岃鑹?(user-roles 妯″瀷)</P> <P><BR>Note that the user-roles model as it is used in the servlet, ejb and portlet specifications, is not sufficiently powerful for handling task assignments. That model is a many-to-many relation between users and roles. This doesn't include information about the teams and the organisational structure of users involved in a process.</P> <P><BR>The classes in yellow are the relevant(鐩稿叧鐨? classes for the expression assignment handler that is discussed next.</P> <P>A User represents a user or a service.|涓涓敤鎴瘋〃鐜頒負涓涓敤鎴鋒垨涓涓湇鍔°倈 A Group is any kind of group of users.|涓涓粍鏄換浣曠綾葷敤鎴風粍銆倈 Groups can be nested to model the relation between a team, a business unit and the whole company.|緇勫彲浠ヨ鍐呭祵鍒板湪鍥㈤槦銆佸晢涓氬崟鍏冨拰鏁翠釜鍏徃鐨勫叧緋繪ā鍨嬨?| Groups have a type to differentiate between the hierarchical groups and e.g. haircolor groups.|緇勫彲浠ユ湁涓涓綾繪潵鍖哄垎鍒嗙瓑綰х殑緇勫拰haircolor緇勩倈 Memberships represent the many-to-many relation between users and groups. A membership can be used to represent a position in a company.|涓涓猰embership鍙互琚敤鏉ヨ〃鐜板湪鍏徃涓殑浣嶇疆銆倈 The name of the membership can be used to indicate(鎸囧嚭) the role that the user fullfills in the group.</P> <P>9.8.2. Assignment expressions 錛堝垎媧捐〃杈懼紡錛?BR>The identity component comes with one implementation that evaluates an expression for the calculation of actors during assignment of tasks. Here's an example of using the assignment expression in a process definition:</P> <P><process-definition><BR>  ...<BR>  <task-node name='a'><BR>    <task name='laundry'><BR>      <assignment expression='previous --> group(hierarchy) --> member(boss)' /><BR>    </task><BR>    <transition to='b' /><BR>  </task-node><BR>  ...<BR>Syntax of the assignment expression is like this:</P> <P>first-term --> next-term --> next-term --> ... --> next-term</P> <P>where</P> <P>first-term ::= previous |<BR>               swimlane(swimlane-name) |<BR>               variable(variable-name) |<BR>               user(user-name) |<BR>               group(group-name)</P> <P>and </P> <P>next-term ::= group(group-type) |<BR>              member(role-name)</P> <P>9.8.2.1. First terms <BR>An expression is resolved錛堝垎瑙o級 from left to right.|涓涓〃杈懼紡琚粠宸﹀埌鍙寵繘琛屽垎瑙 The first-term specifies a User or Group in the identity model.|絎竴涓」鐩槸鍦ㄨ韓浠芥ā鍨嬩腑鎸囧畾浜嗕竴涓敤鎴鋒垨緇剕 Subsequent terms calculate the next term from the intermediate錛堜腑闂寸殑錛?user or group.</P> <P>previous means the task is assigned to the current authenticated actor. This means the actor that performed the previous step in the process.</P> <P>swimlane(swimlane-name) means the user or group is taken from the specified swimlane instance.</P> <P>variable(variable-name) means the user or group is taken from the specified variable instance. The variable instance can contain a java.lang.String, in which case that user or group is fetched from the identity component. Or the variable instance contains a User or Group object. </P> <P>user(user-name) means the given user is taken from the identity component.</P> <P>group(group-name) means the given group is taken from the identity component.</P> <P>9.8.2.2. Next terms<BR>group(group-type) gets the group for a user. Meaning that previous terms must have resulted in a User. It searches for the the group with the given group-type in all the memberships for the user.</P> <P>member(role-name) gets the user that performs a given role for a group. The previous terms must have resulted in a Group. This term searches for the user with a membership to the group for which the name of the membership matches the given role-name.</P> <P>9.8.3. Removing the identity component<BR>When you want to use your own datasource for organisational information such as your company's user database or ldap system, you can just rip out the jBPM identity component. The only thing you need to do is make sure that you delete the line ...</P> <P><mapping resource="org/jbpm/identity/hibernate/identitymappings.hbm.xml"/><BR>from the hibernate.cfg.xml </P> <P>The ExpressionAssignmentHandler is dependent on the identity component so you will not be able to use it as is. In case you want to reuse the ExpressionAssignmentHandler and bind it to your user data store, you can extend from the ExpressionAssignmentHandler and override the method getExpressionSession. </P> <P>protected ExpressionSession getExpressionSession(AssignmentContext assignmentContext);<BR></P><img src ="http://www.tkk7.com/javaora/aggbug/6159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javaora/" target="_blank">java涓栫晫鐣呰皥</a> 2005-06-15 13:42 <a href="http://www.tkk7.com/javaora/archive/2005/06/15/6159.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>jBPM鐨勫垎媧続ssignmenthttp://www.tkk7.com/javaora/archive/2005/06/15/6147.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Wed, 15 Jun 2005 03:18:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/15/6147.htmlhttp://www.tkk7.com/javaora/comments/6147.htmlhttp://www.tkk7.com/javaora/archive/2005/06/15/6147.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/6147.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6147.htmlAssignment(鍒嗘淳)
A process definition contains can have task nodes. A task-node contains zero or more tasks. Tasks are a static description as part of the process definition. At runtime, tasks result(璧鋒簮浜? in the creation of task instances. A task instance corresponds to錛堢浉搴旓級 one entry in a person's task list.
tasknodes-->>task-node--->>tasks 

With jBPM, push and pull model (see below) of task assignment can be applied in combination. The process can calculate(鑰冭檻) the responsible for a task and push it in his/her tasklist. Or alternatively錛堜綔涓洪夋嫨錛? a task can be assigned to a pool of actors, in which case each of the actors in the pool can pull the task and put it in the actor's personal tasklist.  {榪欓噷鎻愬埌浜嗕竴涓涓烘睜鐨勬蹇?pool of actors}

9.3.1. Assignment interfaces
Assigning task instances is done via the interface AssignmentHandler: {浠誨姟瀹炰緥鍒嗘淳鏄緷闈燗ssignmentHandler鏉ュ疄鐜扮殑}

public interface AssignmentHandler extends Serializable {
  void assign( Assignable assignable, ExecutionContext executionContext );
}
An assignment handler implementation is called when a task instance is created. At that time, the task instance can be assigned to one or more actors. The AssignmentHandler implementation should call the Assignable methods (setActorId or setPooledActors) to assign a task. The Assignable is either a TaskInstance or a SwimlaneInstance (=process role).

Assignable 嫻佺▼瑙掕壊錛歍askInstance  SwimlaneInstance

public interface Assignable {
  public void setActorId(String actorId);
  public void setPooledActors(String[] pooledActors);
}

Both TaskInstances and SwimlaneInstances can be assigned to a specific user or to a pool of actors. To assign a TaskInstance to a user, call Assignable.setActorId(String actorId). To assign a TaskInstance to a pool of candidate錛堜警閫夛級 actors, call Assignable.setPooledActors(String[] actorIds).

鍒嗛厤瀵硅薄錛?BR>鍒嗛厤緇欎竴涓敤鎴?nbsp;      Assignable.setActorId(String actorId);
鍒嗛厤緇欎竴涓警閫夌敤鎴鋒睜 Assignable.setPooledActors(String[] actorIds);

Each task in the process definition can be associated with an assignment handler implementation to perform the assignment at runtime.


When more then one task in a process should be assigned to the same person or group of actors, consider the usage of a swimlane

鍦ㄤ竴涓祦紼嬪綋澶氫簬涓涓換鍔℃椂搴斿綋琚垎媧劇粰涓涓敤鎴鋒垨澶氱敤鎴風殑緇勶紝鑰冭檻浣跨敤娉抽亾銆?/P>

To allow for the creation of reusable AssignmentHandlers, each usage of an AssignmentHandler can be configured in the processdefinition.xml. See Section 13.2, 鈥淒elegation錛堝鎵橈級鈥?for more information on how to add configuration to assignment handlers.

9.3.2. The assignment data model
The datamodel for managing assignments of task instances and swimlane instances to actors is the following. Each TaskInstance has an actorId and a set of pooled actors.

The actorId is the responsible for the task, while the set of pooled actors represents a collection of candidates that can become responsible if they would take the task. Both actorId and pooledActors are optional and can also be combined.


Pull model(鎷夋ā寮?
On the other hand, the tasks of pooled tasks for a given user are the tasks for which the given user is referenced in the pooled actors.
Fetching the list of pooled tasks is typically a two step operation :
1) get all the groups for the given user from the identity component. and
2) get the list of all pooled tasks for the combined set of the user's actorId and the actorId's that reference the users' groups.
 Getting the list of pooled tasks that are offered to a given user can be done with the methods TaskMgmtSession.findPooledTaskInstances(String actorId) or TaskMgmtSession.findPooledTaskInstances(List actorIds). These methods will only return task instances for which the actorId is null and one of the given actorIds matches one of the pooled actors.

TaskMgmtSession.findPooledTaskInstance(String actorId)
TaskMgmtSession.findPooledTaskInstance(List actorIds)

To prevent multiple users working on the same pooled task, it is sufficient to update the actorId of the TaskInstance with the user's actorId. After that, the task instance will not appear in the list of pooled tasks, but only in the user's personal task list. Setting the actorId of a taskInstance to null will put the task instance back in the pooled tasks.



java涓栫晫鐣呰皥 2005-06-15 11:18 鍙戣〃璇勮
]]>
浠誨姟瀹炰緥http://www.tkk7.com/javaora/archive/2005/06/15/6146.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Wed, 15 Jun 2005 02:33:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/15/6146.htmlhttp://www.tkk7.com/javaora/comments/6146.htmlhttp://www.tkk7.com/javaora/archive/2005/06/15/6146.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/6146.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6146.html9.2. Task instances|浠誨姟瀹炰緥|
A task instance can be assigned to an actorId (java.lang.String).|浠誨姟瀹炰緥琚垎媧劇粰涓涓涓篒D銆倈 All task instances are stored in one table of the database (JBPM_TASKINSTANCE).|鎵鏈夌殑瀹炰緥閮借瀛樺偍鍦ㄦ暟鎹簱鐨勪竴涓〃鏍奸噷(JBPM_TASKINSTANCE)銆倈 By querying this table for all task instances for a given actorId, you get the task list for that perticular user. |閫氳繃鏌ヨ榪欎釜琛屼負ID琛ㄧ殑鎵鏈変換鍔″疄渚嬬殑琛紝浣犲緱鍒版寚瀹氱敤鎴風殑浠誨姟鍒楄〃銆倈

The jBPM task list mechanism can combine jBPM tasks with other tasks, even when those tasks are unrelated to a process execution.|jBPM浠誨姟鍒楄〃鏈哄埗鍙互涓庡叾瀹冧換鍔$粨鍚坖BPM浠誨姟錛岀敋鑷沖綋榪欎簺浠誨姟涓庝竴涓祦紼嬫墽琛屾棤鍏熾倈 That way jBPM developers can easily combine jBPM-process-tasks with tasks of other applications in one centralized task-list-repository.|閭g鏂規(guī)硶jBPM寮鍙戜漢鍛樺彲浠ュ拰瀹規(guī)槗鐨勪嬌jBPM嫻佺▼浠誨姟鍦ㄤ竴涓泦涓殑浠誨姟鍒楄〃搴撲笌鍏朵粬紼嬪簭涓殑浠誨姟|

9.2.1. Task instance life cycle |浠誨姟瀹炰緥鐢熷懡鍛ㄦ湡|
The task instance lifecycle is straightforward: After creation, task instances can optionally be started.|浠誨姟鐢熷懡鍛ㄦ湡鏄?綆鍗曠殑錛氬湪鍒涘緩涔嬪悗錛屼換鍔″疄渚嬪彲浠ラ殢鎰忓湴琚紑濮嬨倈 Then, task instances can be ended, which means that the task instance is marked as completed.|鎺ョ潃錛屼換鍔″疄渚嬪彲鑳借緇撴潫錛屽畠鎰忓懗鐫浠誨姟瀹炰緥宸茬粡琚爣蹇楀凡瀹屾垚銆倈

Note that for flexibility, assignment is not part of the life cycle.|娉ㄦ剰閫傚簲鎬с佸媧句笉鏄敓鍛藉懆鏈熺殑涓閮ㄥ垎銆倈 So task instances can be assigned or not assigned.|鎵鏈変換鍔″疄渚嬪彲鑳借濮旀淳涔熷彲鑳戒笉琚媧俱倈 Task instance assignment does not have an influence on the task instance life cycle.|浠誨姟瀹炰緥濮旀淳涓嶅獎鍝嶄換鍔″疄渚嬬殑鐢熷懡鍛ㄦ湡銆倈

Task instances are typically created by the process execution entering a task-node (with the method TaskMgmtInstance.createTaskInstance(...)).|浠誨姟瀹炰緥琚繘鍏ヤ竴涓換鍔¤妭鐐規(guī)祦紼嬫墽琛屼唬鍏稿瀷鐨勫垱寤?浣跨敤TaskMgmtInstance.createInstance(...)鏂規(guī)硶)| Then, a user interface component will query the database for the tasklists using the TaskMgmtSession.findTaskInstancesByActorId(...).|鎺ョ潃涓涓敤鎴鋒帴鍙g粍浠跺皢瑕佷負浠誨姟鍒楄〃鏌ヨ鏁版嵁搴撲嬌鐢═askMgmtSession.findTaskInstancesByActorId(...)| Then, after collecting input from the user, the UI component calls TaskInstance.assign(String), TaskInstance.start() or TaskInstance.end(...).|鎺ョ潃錛屽湪鏀墮泦浠庣敤鎴鋒敹鍏ヤ箣鍚庯紝榪欎釜UI緇勪歡璋冪敤TaskIntsance.assign(String),TaskInstance.start() 鎴栬?TaskInstance.end(...)銆倈

A task instance maintains it's state by means of date-properties : create, start and end.|涓涓換鍔″疄渚嬩緷闈犳棩鏈熷睘鎬х淮鎶ゅ畠鐨勭姸鎬侊細鍒涘緩銆佸紑濮嬨佺粨鏉熴倈 Those properties can be accessed by their respective getters on the TaskInstance.|榪欎簺灞炴у彲浠ラ氳繃瀹冧滑鐨勫悇鑷湪浠誨姟瀹炰緥涓婄殑鐨刧etters琚闂倈

Currently, completed task instances are marked with an end date so that they are not fetched with subsequent queries for tasks lists.|閫氬父鍦幫紝瀹屾垚鐨勪換鍔″疄渚嬭鏍囧織涓虹粨鏉熺姸鎬侊紝鎵浠ヤ粬浠茍涓嶉氳繃瀵逛換鍔″垪琛ㄧ殑瀛愭煡璇㈣幏寰椼倈 But they remain in the JBPM_TASKINSTANCE table.|浣嗘槸浠栦滑浠嶇劧淇濇寔鍦↗BPM_TASKINGSTANCE琛ㄤ腑銆倈

9.2.2. Task instances and graph execution|浠誨姟瀹炰緥鍜屽浘琛ㄦ墽琛寍
Task instances are the items in an actor's tasklist.|浠誨姟瀹炰緥鏄湪琛屽姩鑰呯殑浠誨姟鍒楄〃涓殑欏圭洰銆倈 Task instances can be signalling.|浠誨姟瀹炰緥鍙互琚彂淇″彿鐨剕 A signalling task instance is a task instance that, when completed, can send a signal to its token to continue the process execution.|涓涓彂淇″彿鐨勪換鍔″疄渚嬫槸涓涓繖鏍風殑浠誨姟瀹炰緥錛屽綋琚畬鎴愭椂鍊欙紝鍙互鍙戦佷竴涓俊鍙風粰瀹冪殑浠ょ墝浠ョ戶緇祦紼嬬殑鎵ц銆倈 Task instances can be blocking, meaning that the related token (=path of execution) is not allowed to leave the task-node before the task instance is completed.|浠誨姟瀹炰緥鍙互琚ā鍧楀寲錛屾剰鍛崇潃鏈夊叧緋葷殑浠ょ墝錛堟墽琛岃礬寰勶級鍦ㄤ換鍔″疄渚嬪畬鎴愪箣鍓嶅厑璁哥寮浠誨姟鑺傜偣銆倈 By default task instances are signalling and non-blocking. |緙虹渷鐨勪換鍔″疄渚嬫槸琚俊鍙峰寲涓旈潪妯″潡鍖栫殑銆倈

In case more than one task instance are associated with a task-node, the process developer can specify how completion of the task instances affects continuation of the process.|涓囦竴瓚呰繃涓涓殑浠誨姟瀹炰緥涓庝竴涓換鍔¤妭鐐瑰叧鑱旓紝榪欎釜嫻佺▼寮鍙戣呭彲浠ュ畾涔?浠誨姟瀹炰緥鐨勫畬鎴愬浣曞獎鍝嶆祦紼嬬殑緇х畫銆倈 Following is the list of values that can be given to the signal-property of a task-node.|鎺ヤ笅鏉ユ槸鍊肩殑鍒楄〃鍙互鎸囧畾緇欒妭鐐圭殑淇″彿灞炴с倈

last: This is the default.|鏈鍚庯細榪欐槸緙虹渷鐨勩倈 Proceeds execution when the last task instance is completed.|褰撴渶鍚庢祦紼嬫墽琛屽畬姣曪紝緇х畫榪涜鎵ц銆倈 When no tasks are created on entrance of this node, execution waits in the task node till tasks are created.|褰撳湪榪欎釜鐨勮妭鐐圭殑鍏ュ彛娌℃湁浠誨姟琚垱寤猴紝鍦ㄤ換鍔¤妭鐐逛腑鎵ц絳夊緟鐩村埌榪欎簺浠誨姟琚垱寤恒倈
last-wait: Proceeds execution when the last task instance is completed. When no tasks are created on entrance of this node, execution waits in the task node till tasks are created.
first: Proceeds execution when the first task instance is completed. When no tasks are created on entrance of this node, execution is continued.
first-wait: Proceeds execution when the first task instance is completed. When no tasks are created on entrance of this node, execution is continued.
unsynchronized: Execution always continues, regardless wether tasks are created or still unfinished.
never: Execution never continues, regardless wether tasks are created or still unfinished.
Task instance creation might be based upon a runtime calculation. In that case, add an ActionHandler on the node-enter event of the task-node and set the attribute create-tasks="false". Here is an example of such an action handler implementation:

public class CreateTasks implements ActionHandler {
  public void execute(ExecutionContext executionContext) throws Exception {
    Token token = executionContext.getToken();
    TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance();
     
    TaskNode taskNode = (TaskNode) executionContext.getNode();
    Task changeNappy = taskNode.getTask("change nappy");

    // now, 2 task instances are created for the same task.
    tmi.createTaskInstance(changeNappy, token);
    tmi.createTaskInstance(changeNappy, token);
  }
}
As shown in the example the tasks to be created can be specified in the task-node. They could also be specified in the process-definition and fetched from the TaskMgmtDefinition. TaskMgmtDefinition extends the ProcessDefinition with task management information.

The API method for marking task instances as completed is TaskInstance.end(). Optionally, you can specify a transition in the end method. In case the completion of this task instance triggers continuation of the execution, the task-node is left over the specified transition.



java涓栫晫鐣呰皥 2005-06-15 10:33 鍙戣〃璇勮
]]>
jBPM浠誨姟綆$悊涔嬩換鍔?/title><link>http://www.tkk7.com/javaora/archive/2005/06/14/6137.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Tue, 14 Jun 2005 15:03:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/06/14/6137.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/6137.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/06/14/6137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/6137.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/6137.html</trackback:ping><description><![CDATA[<P>Task management銆庝換鍔$鐞嗐?BR>The core business of jBPM is the ability to persist the execution of a process. 銆巎BPM鐨勬牳蹇冧笟鍔℃槸鏈夎兘鍔涙寔涔呭寲嫻佺▼鐨勬墽琛屻傘廇 situation in which this feature is extremely useful is the management of tasks and tasklists for people.銆庡湪榪欑壒寰佷腑鐨勪竴涓В鍐蟲柟妗堝浜轟滑浠誨姟鎴栬呬換鍔″垪琛ㄧ殑綆$悊鏄潪甯告湁鐢ㄧ殑銆?jBPM allows to specify a piece of software describing an overall process which can have wait states for human tasks.銆巎BPM 鍏佽瀹氫箟涓鍧楄蔣浠舵弿榪板叏閮ㄧ殑嫻佺▼錛屽畠鍙互涓虹敤鎴蜂換鍔℃寔鏈夌瓑寰呯姸鎬併?/P> <P>1. Tasks銆庝換鍔°?BR>Tasks are part of the process definition and they define how task instances must be created and assigned during process executions.銆庝換鍔℃槸 嫻佺▼瀹氫箟鐨勪竴閮ㄥ垎錛屽茍涓斿畠浠畾涔変簡鍦ㄦ祦紼嬫墽琛屼腑浠誨姟瀹炰緥濡備綍蹇呴』琚垱寤哄拰鍒嗘淳銆?銆?/P> <P>Tasks can be defined in task-nodes and in the process-definition.銆庝換鍔″彲浠ヨ瀹氫箟鍦╰ask-nodes鍜屾祦紼嬪畾涔夌殑涓?The most common way is to define one or more tasks in a task-node.銆庢渶閫氱敤鐨勬柟寮忔槸鍦╰ask-node涓畾涔変竴涓垨澶氫釜浠誨姟銆傘?In that case the task-node represents a task to be done by the user and the process execution should wait until the actor completes the task.銆庡鏋滄槸閭f牱鐨勮瘽榪欎釜浠誨姟鑺傜偣琛ㄧ幇浜嗕竴涓換鍔¤鐢ㄦ埛鎵ц騫朵笖榪欎釜嫻佺▼鎵ц搴斿綋絳夊緟鐩村埌琛屽姩鑰呭畬鎴愩傘?When the actor completes the task, process execution should continue.銆庡綋琛屽姩鑰呭畬鎴愯繖涓換鍔★紝嫻佺▼鎵ц搴旇緇х畫銆傘?When more tasks are specified in a task-node, the default behaviour is to wait for all the tasks to complete.銆庡綋鍦ㄤ換鍔¤妭鐐逛腑瀹氫箟澶氫釜浠誨姟錛岀己鐪佽涓烘槸絳夊緟鎵鏈夋墍鏈変換鍔″畬鎴愩傘?</P> <P>Tasks can also be specified on the process-definition.銆庝換鍔′篃鍙互琚畾涔夊湪嫻佺▼瀹氫箟涓傘?Tasks specified on the process definition can be looked up by name and referenced from within task-nodes or used from inside actions.銆庡畾涔夊湪嫻佺▼瀹氫箟涓殑浠誨姟鍙互閫氳繃鍚嶅瓧鏌ユ壘鍜屼粠浠誨姟鑺傜偣鍐呴儴鍙傝冩垨鑰呬粠鍐呴儴琛屼負涓嬌鐢ㄣ傘?In fact, all tasks (also in task-nodes) that are given a name can be looked up by name in the process-definition. 銆庡疄闄呬笂錛屾墍鏈夌殑浠誨姟錛堝湪浠誨姟鑺傜偣涓殑涔熶竴鏍鳳級鍙互鍦ㄦ祦紼嬪畾涔夐氳繃鍚嶅瓧榪涜鏌ユ壘銆?/P> <P>Task names must be unique in the whole process definition.銆庝換鍔″悕縐板湪鏁翠釜嫻佺▼瀹氫箟涓繀欏繪槸涓嶈兘閲嶅鐨勩?/P> <P><BR> </P><img src ="http://www.tkk7.com/javaora/aggbug/6137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javaora/" target="_blank">java涓栫晫鐣呰皥</a> 2005-06-14 23:03 <a href="http://www.tkk7.com/javaora/archive/2005/06/14/6137.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>JBpm鐨勬寔涔呭眰 Persistencehttp://www.tkk7.com/javaora/archive/2005/06/14/6121.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Tue, 14 Jun 2005 10:04:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/14/6121.htmlhttp://www.tkk7.com/javaora/comments/6121.htmlhttp://www.tkk7.com/javaora/archive/2005/06/14/6121.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/6121.htmlhttp://www.tkk7.com/javaora/services/trackbacks/6121.html錛堜竴錛夌粨鏋?
(1)XML瀹氫箟鏂囦歡(definition)
(2)plain java   JBpm瀵硅薄妯″瀷  瀹氫箟 鎵ц 鏃ュ織
(3)DataBase  瀹氫箟 鎵ц 鏃ュ織
錛堜簩錛?BR>A process definition can be represented in 3 different forms : as xml, as java objects and as records in the jBPM database. Executional (=runtime) information and logging information can be represented in 2 forms : as java objects and as records in the jBPM database.{涓涓祦紼嬪畾涔夊彲浠ヨ〃鐜頒負涓夌涓嶅悓鐨勫艦鎬侊細XML 銆乯ava瀵硅薄鍜宩Bpm鏁版嵁搴撲腑鐨勮褰曘傛墽琛岋紙榪愯錛変俊鎭拰鏃ュ織淇℃伅鍙互琛ㄧ幇涓轟袱縐嶅艦鎬侊細java瀵硅薄鍜宩Bpm鏁版嵁搴撲腑鐨勮褰晑

For more information about the xml representation of process definitions and process archives, see Chapter 13, jBPM Process Definition Language (JPDL).{Process Definition Language JPDL}

This chapter will discuss the transformations done between the java objects and the jBPM database. To store java objects in the database and retrieve them, jBPM uses hibernate internally. While it is not strictly necessary to have hibernate knowledge for using jBPM, it is recommended. {榪欎釜绔犺妭灝嗚璁ㄨ鍦╦ava瀵硅薄鍜宩BPM鏁版嵁搴撲箣闂寸殑杞崲銆備負浜嗗湪鏁版嵁搴撲腑瀛樺偍瀵硅薄鍜岃幏鍙栦粬浠紝jBPM浣跨敤鍐呴儴浣跨敤浜咹ibernate銆傚綋鐒朵笉鏄湪浣跨敤jBPM涓弗鏍艱鎷ユ湁Hibernate鐨勭煡璇嗭紝瀹冩槸寤鴻鐨剗

More information on how to deploy a process archive to the database can be found in Section 13.1.1, 鈥淒eploying a process archive鈥?.


錛堜笁錛塖ession鐨勫眰嬈★細
JbpmSessionFactory
|
|
|
JbpmSession
|
|
|
GraphSession
TaskMgmtSession
ContextSession

錛堝洓錛?The jBPM database classes

The jBPM persistence operations can be found in the named sessions like e.g. GraphSession, TaskMgmtSession and ContextSession,... The named sessions can be obtained from a JbpmSession. The JbpmSession in its turn can be obtained from a JbpmSessionFactory. {jBPM鎸佷箙灞傛搷浣滃彲浠ュ彂鐜拌鍛藉悕涓簊essions,渚嬪鎯矴raphSession TaskMgmtSession鍜孋ontextSession.... 榪欎釜鍛藉悕sessions鍙互浠嶫bpmSession涓幏寰椼侸bmpSession鍙互浠嶫bpmSessionFactory涓幏寰梷

A JbpmSessionFactory is threadsafe so in your application, you need one JbpmSessionFactory. That singleton can be referenced e.g. in a static variable with lazy initialization (beware about the issues around lazy initialization and double-checked locking). At creation time, the JbpmSessionFactory prepares all information in a way that JbpmSessions can be created super fast. {涓涓狫bpmSessionFactory鍦ㄤ綘鐨勭▼搴忎腑鏄嚎紼嬪畨鍏ㄧ殑錛屼綘浠呬粎闇瑕佷竴涓狫bpmSessionFactory. 閭d釜鍗曚緥鍙互琚弬鑰冨湪渚嬪鍦╨azy鍒濆鍖栦笅鐨勯潤鎬佸彉閲忥紙灝忓績鍙戝竷鍦↙azy 鍒濆鍖栧茍涓斿弻灞傛鏌ラ攣瀹氥傚湪鍒涘緩鏃跺埢錛孞bpmSessionFactory 鍦ㄦ煇縐嶇▼搴﹀噯澶囨墍鏈変俊鎭偅鏍峰彲浠ヨ蹇熷垱寤猴級}

As a user, you should create one JbpmSession per thread or per request. The JbpmSession has a JDBC connection to the database. {浣滀負涓涓敤鎴鳳紝浣犲簲璇ュ垱寤轟竴涓狫bpmSession 姣忎竴涓嚎紼嬫垨姣忎竴嬈¤姹傘侸bpmSession鎷ユ湁涓涓繛鎺ユ暟鎹簱鐨凧dbc榪炴帴銆倉

The purpose of the JbpmSession and JbpmSessionFactory is only to wrap their hibernate counterparts. For advanced features such as detached objects or optimistic locking, see the hibernate documentation. {榪欎釜JbpmSession鍜孞bpmSessionFactory鐨勭洰鐨勪粎浠呮槸涓轟簡鍖呰Hibernate 鍓湰銆?瀵逛簬楂樼駭鐗瑰緛 渚嬪鍒嗙瀵硅薄鎴栦箰瑙傞攣錛岀湅hibernate鏂囨。銆倉

public class PersistenceApiTest extends TestCase {

  static JbpmSessionFactory jbpmSessionFactory = JbpmSessionFactory.buildJbpmSessionFactory();

  public void testStartProcessInstance() {
    // obtain a session
    JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
    try {
      // start a user managed transaction
      jbpmSession.beginTransaction();

      // load information from the database
      // (note that process definitions will be cached in memory
      // in the second level cache of hibernate)
      ProcessDefinition auctionProcess =
        jbpmSession.getGraphSession().findLatestProcessDefinition("auction");

      // perform a POJO workflow operation on the plain object model.
      ProcessInstance auctionInstance = new ProcessInstance(auctionProcess);
      auctionInstance.signal();
     
      // store the result in the database
      jbpmSession.getGraphSession().saveProcessInstance(auctionInstance);
     
      // commit the user transaction
      jbpmSession.commitTransaction();

    } finally {
      // close the session.
      jbpmSession.close();     
    }
  }
}



java涓栫晫鐣呰皥 2005-06-14 18:04 鍙戣〃璇勮
]]>
jBpm嫻佺▼瀹氫箟XML鏍煎紡http://www.tkk7.com/javaora/archive/2005/06/06/5621.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Mon, 06 Jun 2005 09:07:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/06/5621.htmlhttp://www.tkk7.com/javaora/comments/5621.htmlhttp://www.tkk7.com/javaora/archive/2005/06/06/5621.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/5621.htmlhttp://www.tkk7.com/javaora/services/trackbacks/5621.html嫻佺▼瀹氫箟XML嫻侊細
1.瀹氬埗action錛?BR><process-definition>
   <start-state>
      <transition to="s"/>
   </start-state>
   <state name="s">
      <transition to="end">
         <action class="com....MyActionHandler"/>
      </transition>
   </state>
   <end-state name="end"/>
</process-definition>
2.鏈夊搴斾簨浠剁殑
<process-definition>
   <start-state>
      <transition to="s"/>
   </start-state>
   <state name="s">
      <event type="node-enter">
         <action calss="com....MyActionHandler"/>
      </event>
      <event type="node-leave">
         <action calss="com....MyActionHandler"/>
      </event>
      <transition to="end"/>     
   </state>
   <end-state name="end"/>
</process-definition>
3.浠誨姟鍒嗘淳XML嫻佺▼瀹氫箟
<process-definition name="the baby process">
   <start-state>
      <transition name="baby cries" to="t"/>
   </start-state>
   <task-node name="t">
      <task name="change nappy">
         <assignment class="com....NappyAssignmentHandler"/>
      </task>
      <transition to="end" />
   </task-node>
   <end-state name="end"/>
</process-definition>



java涓栫晫鐣呰皥 2005-06-06 17:07 鍙戣〃璇勮
]]>
jBPM琛ㄧ殑鐚滄祴http://www.tkk7.com/javaora/archive/2005/06/06/5600.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Mon, 06 Jun 2005 05:27:00 GMThttp://www.tkk7.com/javaora/archive/2005/06/06/5600.htmlhttp://www.tkk7.com/javaora/comments/5600.htmlhttp://www.tkk7.com/javaora/archive/2005/06/06/5600.html#Feedback6http://www.tkk7.com/javaora/comments/commentRss/5600.htmlhttp://www.tkk7.com/javaora/services/trackbacks/5600.htmlJBPM_DECISIONCONDITIONS     緇撴灉鏉′歡琛?BR>JBPM_DELEGATION                        濮旀墭琛?BR>JBPM_EVENT                                    浜嬩歡琛?澶勭悊榪涘叆鎴栬呯寮浜嬩歡
JBPM_EXCEPTIONHANDLER        寮傚父澶勭悊琛?BR>JBPM_ID_GROUP                             鐢ㄦ埛緇勮〃
JBPM_ID_MEMBERSHIP                 鐢ㄦ埛鎴愬憳琛?nbsp;  琛ㄧ幇鐢ㄦ埛鍜岀粍涔嬮棿鐨勫瀵瑰鍏崇郴
JBPM_ID_PERMISSIONS                鐢ㄦ埛鏉冮檺琛?BR>JBPM_ID_USER                                鐢ㄦ埛琛?BR>JBPM_MODULEDEFINITION         妯″潡瀹氫箟琛?BR>JBPM_MODULEINSTANCE            妯″潡瀹炰緥琛?BR>JBPM_NODE                                     嫻佺▼鑺傜偣琛?BR>JBPM_POOLEDACTOR                   姹囬泦鍙備笌鐫琛?BR>JBPM_PROCESSDEFINITION         嫻佺▼瀹氫箟琛?BR>JBPM_PROCESSFILE                       嫻佺▼鏂囦歡琛?BR>JBPM_PROCESSFILEBLOCK         嫻佺▼鏂囦歡鍧楄〃
JBPM_PROCESSINSTANCE           嫻佺▼瀹炰緥琛?BR>JBPM_RUNTIMEACTION               榪愯涓涓鴻〃
JBPM_SCRIPTVARIABLES             鑴氭湰鍙橀噺琛?BR>JBPM_SWIMLANE                          娉抽亾琛?BR>JBPM_SWIMLANEINSTANCE       娉抽亾瀹炰緥琛?BR>JBPM_TASK                                     浠誨姟琛?BR>JBPM_TASKACTORPOOL             鐢ㄦ埛琛屼負姹囨?BR>JBPM_TASKINSTANCE                 浠誨姟瀹炰緥
JBPM_TIMER                                   璁℃椂琛?BR>JBPM_TOKEN                                 浠ょ墝琛?BR>JBPM_TOKENVARIABLEMAP      浠ょ墝鍙橀噺褰卞皠琛?BR>JBPM_TRANSITION                        杞崲琛?BR>JBPM_VARIABLEINSTANCE         鍙橀噺瀹炰緥琛?BR>JBPM_VARIABLEINSTANCEBLOCK  鍙橀噺瀹炰緥鍧楄〃
JBPM_VARIABLEMAPPING            鍙橀噺褰卞皠琛?BR>

java涓栫晫鐣呰皥 2005-06-06 13:27 鍙戣〃璇勮
]]>
鍏充簬宸ヤ綔嫻佺殑涓浜涙兂娉?/title><link>http://www.tkk7.com/javaora/archive/2005/06/06/5595.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Mon, 06 Jun 2005 05:02:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/06/06/5595.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/5595.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/06/06/5595.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/5595.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/5595.html</trackback:ping><description><![CDATA[銆銆鏈榪戝垰鍒氬紑濮嬫帴瑙﹀伐浣滄祦錛屾劅瑙夎繖涓笢瑗跨‘瀹炲緢涓嶉敊銆傚綋鐒剁幇鍦ㄨ嚜宸辮繕娌℃湁鍏ラ棬錛屽洜涓鴻嚜宸辯殑鍑犱釜鏈嬪弸鍦ㄥ紑鍙戜腑鎺ヨЕ綾諱技鐨勪笢瑗褲傜幇鍦ㄤ篃寮濮嬫帴瑙︿竴浜涖?BR>銆銆鐩墠閫夋嫨jBPM浣滀負鐮旂┒鐨勫璞★紝鍏朵粬鐨勫伐浣滄祦(OSWorkflow)鏆傛椂鍏堟斁鍦ㄤ竴杈癸紝鍥犱負jBPM灝唄ibernate3.0浣滀負鍏舵寔涔呭眰鐨勮В鍐蟲柟妗堬紝鑰岃嚜宸卞Hibernate鐜板湪涔熸湁浜嗕竴瀹氱殑璁よ瘑銆傛兂鏉ワ紝涓婃墜搴旇濂戒竴浜涚殑銆?BR>銆銆鏄ㄥぉ鍜屾湅鍙嬪湪涓璧風殑娓告吵鐨勬椂鍊欙紝涔熻皥浜嗗緢闀挎椂闂寸殑宸ヤ綔嫻併傚伐浣滄祦鏈夎嚜宸辯殑涓濂桪atabase錛屽叾涓富瑕佽褰曠殑鏄姸鎬佷俊鎭傚伐浣滄祦鍏沖績鐨勫氨鏄姸鎬佷俊鎭傚彲浠ユ湁嫻佺▼鎻忚堪璇█鏉ヨ緗祦紼嬶紝jBPM鏈夎嚜宸變竴濂楃粯鍒舵祦紼嬬殑宸ュ叿錛堟彁渚涚殑鏄竴涓彃浠訛級銆備笉榪囧湪鍏蜂綋鐨勪笟鍔′俊鎭腑涔熻澶勭悊鐘舵佷俊鎭紝鏂逛究浜庢祦鍚戜笅涓笟鍔″眰闈€傛祦紼嬪彲浠ュ洖婊氬鐞嗐?BR>銆銆鍏稿瀷鐨勪竴涓祦紼嬶紝鐢插啓浜嗕竴涓鍋囩敵璇鳳紝鎻愪氦緇欓瀵間箼錛岄瀵兼嬁鍒板悗錛屼笉緇欎簣瀹℃壒錛岀劧鍚庡皢緇欑涓夋柟涓欍備笝鏉ュ鐞嗚繖涓祦紼嬨?BR><img src ="http://www.tkk7.com/javaora/aggbug/5595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/javaora/" target="_blank">java涓栫晫鐣呰皥</a> 2005-06-06 13:02 <a href="http://www.tkk7.com/javaora/archive/2005/06/06/5595.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://qestest.com" target="_blank">久久夜色精品国产嚕嚕亚洲av</a>| <a href="http://6wss.com" target="_blank">亚洲精品偷拍视频免费观看</a>| <a href="http://xx2e.com" target="_blank">亚洲人成亚洲精品</a>| <a href="http://mhysf.com" target="_blank">久久精品免费观看</a>| <a href="http://hqwgg.com" target="_blank">亚洲成av人片在线观看无码不卡</a>| <a href="http://by2988.com" target="_blank">中文字幕免费不卡二区</a>| <a href="http://8953y.com" target="_blank">亚洲精品国产成人99久久</a>| <a href="http://kj555888.com" target="_blank">97精品免费视频</a>| <a href="http://67f6.com" target="_blank">亚洲一级免费视频</a>| <a href="http://www-774220.com" target="_blank">四虎www免费人成</a>| <a href="http://gdjiayou.com" target="_blank">特级毛片全部免费播放</a>| <a href="http://wushicn.com" target="_blank">亚洲中文久久精品无码</a>| <a href="http://513109.com" target="_blank">免费观看在线禁片</a>| <a href="http://whspmd.com" target="_blank">亚洲剧情在线观看</a>| <a href="http://343dd.com" target="_blank">国产无遮挡裸体免费视频</a>| <a href="http://5d8f.com" target="_blank">四虎成人精品国产永久免费无码</a>| <a href="http://www-75044.com" target="_blank">久久久亚洲精品蜜桃臀</a>| <a href="http://xixidhw.com" target="_blank">无码人妻一区二区三区免费看</a>| <a href="http://www1688mz.com" target="_blank">亚洲色大成网站www永久</a>| <a href="http://qulu999.com" target="_blank">成人免费毛片视频</a>| <a href="http://xcdys.com" target="_blank">ww在线观视频免费观看w</a>| <a href="http://5r7b.com" target="_blank">久久夜色精品国产嚕嚕亚洲av</a>| <a href="http://dqcjlb.com" target="_blank">免费无码一区二区三区</a>| <a href="http://xmllhb.com" target="_blank">亚洲国产乱码最新视频</a>| <a href="http://junyehome.com" target="_blank">亚洲国产成人影院播放</a>| <a href="http://zygwkqf.com" target="_blank">久久综合九色综合97免费下载</a>| <a href="http://35xyz.com" target="_blank">亚洲一区二区免费视频</a>| <a href="http://jinlaifubuxiugang.com" target="_blank">国产在线98福利播放视频免费</a>| <a href="http://359777b.com" target="_blank">中文字幕免费在线播放</a>| <a href="http://aijiu868.com" target="_blank">亚洲性色高清完整版在线观看</a>| <a href="http://www678678.com" target="_blank">韩国日本好看电影免费看</a>| <a href="http://gztzbj.com" target="_blank">中文字幕乱理片免费完整的</a>| <a href="http://5gg1.com" target="_blank">亚洲精品在线免费看</a>| <a href="http://24aabb.com" target="_blank">免费女人18毛片a级毛片视频</a>| <a href="http://52099jy.com" target="_blank">国产无遮挡无码视频免费软件</a>| <a href="http://imfever.com" target="_blank">亚洲免费网站在线观看</a>| <a href="http://wwwff113.com" target="_blank">亚洲色一色噜一噜噜噜</a>| <a href="http://438266.com" target="_blank">国产精品永久免费10000</a>| <a href="http://19933k.com" target="_blank">人妻18毛片a级毛片免费看</a>| <a href="http://4438xa48.com" target="_blank">久久亚洲美女精品国产精品</a>| <a href="http://yiqigxfc.com" target="_blank">国产精品色午夜视频免费看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>