锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品自在在线观看,久久精品视频亚洲,久久99国产亚洲高清观看首页http://www.tkk7.com/javaora/category/3413.htmlzh-cnTue, 27 Feb 2007 18:25:12 GMTTue, 27 Feb 2007 18:25:12 GMT60Hibernate鐨剆ubclass鐢ㄦ硶http://www.tkk7.com/javaora/archive/2005/10/03/14688.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Mon, 03 Oct 2005 02:22:00 GMThttp://www.tkk7.com/javaora/archive/2005/10/03/14688.htmlhttp://www.tkk7.com/javaora/comments/14688.htmlhttp://www.tkk7.com/javaora/archive/2005/10/03/14688.html#Feedback1http://www.tkk7.com/javaora/comments/commentRss/14688.htmlhttp://www.tkk7.com/javaora/services/trackbacks/14688.html銆銆(涓)銆侀鍏堝厛鍘葷湅鐪婬ibernate鐨剆ubclass錛?BR>銆銆1.瀵逛簬鈥滄瘡涓涓被緇ф壙鏍?wèi)瀵瑰簲涓涓〃鈥濈殑絳栫暐鏉ヨ錛屽氨闇瑕佷嬌鐢?lt;subclass>瀹氫箟銆?BR>銆銆<subclass>
            name="className"  //瀛愮被鐨勫叏鍚?BR>            discriminator-value="discriminator-value"銆//杈ㄥ埆鏍囪瘑錛屼竴涓敤浜庡尯鍒嗘瘡涓嫭绔嬬殑瀛愮被鐨勫?BR>            proxy="proxyInterface" //鎸囧畾涓涓被鎴栨帴鍙o紝鍦ㄥ歡榪熷姞杞芥椂浣滀負(fù)浠g悊浣跨敤
            lazy="true|false"
            dynamic-update="true|false"
            dynamic-insert="true|false"
            entity-name="entityName"
            node="element-name">
           <property ..../>
          ......
        </subclass>
銆銆2.姣忎釜瀛愮被閮藉簲璇ュ畾涔夊畠鑷繁鐨勬寔涔呭寲灞炴у拰瀛愮被銆?lt;version>鍜?lt;id>灞炴у彲浠ヤ粠鏍圭埗綾葷戶鎵夸笅鍘匯傚湪涓媯電戶鎵挎爲(wèi)涓婄殑姣忎釜瀛愮被閮藉繀欏誨畾涔変竴涓敮涓鐨刣iscriminator-value銆傚鏋滄病鏈夋寚瀹氾紝灝變細(xì)浣跨敤Java綾葷殑鍏ㄩ檺瀹氬悕銆?BR>銆銆3.蹇呴』鍦ㄥ瓙綾葷殑褰卞皠涓寚瀹歟xtends灞炴ф潵鎸囧畾宸插獎灝勭殑瓚呯被銆?BR>
銆(浜?鍦╦BPM涓殑浣跨敤
銆1.鍦╦BPM鐨刣efinition緇勭殑綾繪満鏋勪腑灝遍噰鐢ㄤ笂榪扮殑鎶鏈傚叾涓璏oduleDefinition鏄綔涓烘娊璞$埗綾誨瓨鍦ㄧ殑錛岃孋ontextDefinition銆丗ileDefinition銆丩oggingDefinition銆丼chedulerDefinition銆丮gmtDefinition綾繪槸鍋氫負(fù)subclass瀛樺湪鐨勩?BR>銆2.鍦ㄧ埗綾諱腑浣跨敤浜哾iscriminator閴村埆鍣ㄧ殑鎶鏈細(xì)鍦ㄧ戶鎵跨瓥鐣ヤ腑鐨勨?STRONG>涓涓璞$戶鎵挎爲(wèi)搴斿搴斾竴涓〃鈥濈殑絳栫暐涓紝<discriminator>鍏冪礌鏄繀欏葷殑銆傞壌鍒櫒瀛楁鍖呭惈鏍囧織鍊鹼紝鐢ㄤ簬鍛婄煡鎸佷箙灞傚簲璇ヤ負(fù)鏌愪釜鐗瑰畾鐨勮鍒涘緩鍝竴涓被鍒殑瀹炰緥銆備緥濡傦細(xì)
  鐖剁被鐨勫獎灝勭墖孌碉細(xì)
    <discriminator type="char" column="CLASS_"/>
    <!-- M : org.jbpm.module.def.ModuleDefinition -->
    <!-- C : org.jbpm.context.def.ContextDefinition -->
    <!-- F : org.jbpm.file.def.FileDefinition -->
    <!-- L : org.jbpm.logging.def.LoggingDefinition -->
    <!-- I : org.jbpm.scheduler.def.SchedulerDefinition -->
    <!-- T : org.jbpm.taskmgmt.def.TaskMgmtDefinition -->
    <!--  :  -->
    <!--  :  -->
銆3.閴村埆鍣ㄥ瓧孌電殑瀹為檯鍊兼槸鏍規(guī)嵁<class>鍜?lt;subclass>鍏冪礌涓殑discriminator-value灞炴у緱鏉ョ殑銆?BR>銆渚嬪錛?BR>銆銆鐖跺獎灝勬枃浠訛細(xì)
銆銆<class name="org.jbpm.module.def.ModuleDefinition"
         table="JBPM_MODULEDEFINITION"
         abstract="true"
         discriminator-value="M"
         lazy="false">
       瀛愬獎灝勬枃浠訛細(xì)
銆銆<subclass name="org.jbpm.context.def.ContextDefinition"
            extends="org.jbpm.module.def.ModuleDefinition"
            discriminator-value="C"
            lazy="false">
       </subclass>


]]>
org.jbpm鍖呯殑JbpmConfiguration綾?/title><link>http://www.tkk7.com/javaora/archive/2005/10/02/14641.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 02 Oct 2005 02:52:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/10/02/14641.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/14641.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/10/02/14641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/14641.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/14641.html</trackback:ping><description><![CDATA[<P>銆銆鏈変竴闃墊病鏈夌湅jBPM鐨剆ource浜嗭紝姝eソ榪欏嚑澶╂槸鍥藉簡錛屽彛琚嬩篃娌℃湁澶氬皯綾籌紝娌℃湁鍑哄幓鏃呮父鐨勮鍒掞紝鎵浠ワ紝鍙堥噸鏂扮爺絀跺垎鏋愪竴涓媠rc銆傚笇鏈涗粠涓彲浠ュ涔?fàn)鍒版湁鐢ㄧ殑涓滀笢锛?BR>銆銆JbpmConfiguration錛屼粠鍚嶅瓧涓婂氨鐭ラ亾鏄幏鍙杍BPM鐨勭浉鍏抽厤緗俊鎭備笉榪囪繖閲屽啓鐨勬槸涓涓叕鍏辯殑鑾峰彇properties鐨勬柟娉曘?BR>銆銆棣栧厛澹版槑浜嗕竴涓猻tatic properties錛堥潤鎬佸睘鎬э級鐨勫疄渚媝roperties,鐒跺悗浣跨敤闈欐佹柟娉昰etProperties錛堬級錛屼負(fù)properties鑾峰緱鍏蜂綋鐨勫鹼紙鍙杘rg.jbpm.jbpm.properties錛夈?BR>銆銆鐒跺悗鏄疦澶氳幏鍙栨柟娉曪細(xì)<BR>銆銆public static String getString(String key)<BR>銆銆public static String getString( String key, String defaultValue )銆//濡傛灉娌℃湁榪欎釜鍊鹼紝榛樿榪斿洖鐨勬槸defaultValue<BR>銆銆public static long getLong( String key, long defaultValue )<BR>銆銆public static boolean getBoolean(String key, boolean defaultValue)<BR>銆銆public static Object getObject(String key)<BR>銆銆public static Object getObject(String key, Object defaultValue)    <BR>銆銆榪欎簺涓鴻幏鍙朣tring銆乴ong銆乥oolean銆丱bject鎻愪緵鍩虹鐨勬敮鎸侊紝涓轟互鍚庣殑鎿嶄綔鎻愪緵浜嗗緢澶氱殑鏂逛究銆?/P><img src ="http://www.tkk7.com/javaora/aggbug/14641.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-10-02 10:52 <a href="http://www.tkk7.com/javaora/archive/2005/10/02/14641.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Task management 浠誨姟綆$悊http://www.tkk7.com/javaora/archive/2005/09/22/13759.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Thu, 22 Sep 2005 10:02:00 GMThttp://www.tkk7.com/javaora/archive/2005/09/22/13759.htmlhttp://www.tkk7.com/javaora/comments/13759.htmlhttp://www.tkk7.com/javaora/archive/2005/09/22/13759.html#Feedback7http://www.tkk7.com/javaora/comments/commentRss/13759.htmlhttp://www.tkk7.com/javaora/services/trackbacks/13759.htmlTask management 浠誨姟綆$悊
The core business of jBPM is the ability to persist the execution of a process. A 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.
jBPM鐨勬牳蹇冮昏緫鏄湁鑳藉姏鎸佷箙鍖栨祦紼嬬殑鎵ц銆備竴涓負(fù)浜轟滑鐢ㄦ潵綆$悊浠誨姟鍜屼換鍔″垪琛ㄧ殑鐗瑰緛鐨勬儏褰㈡槸闈炲父鏈夌敤鐨勩俲BPM鍏佽鎸囧畾涓浜涜蔣浠舵弿榪頒竴涓叏闈㈢殑嫻佺▼錛屽畠鍙互涓轟漢浠誨姟鎷ユ湁絳夊緟鐘舵併?/P>

9.1. Tasks 浠誨姟
Tasks are part of the process definition and they define how task instances must be created and assigned during process executions.
浠誨姟鏄祦紼嬪畾涔夌殑涓閮ㄥ垎錛屽茍涓斾粬浠畾涔変簡浠誨姟瀹炰緥濡備綍鍦ㄦ祦紼嬫墽琛屼腑蹇呴』琚垱寤哄茍涓斿媧俱?/P>

Tasks can be defined in task-nodes and in the process-definition. The most common way is to define one or more tasks in a task-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. 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.
浠誨姟鍙互鍦╰ask-nodes鍜宲rocess-definition涓瀹氫箟銆傛渶甯哥敤鐨勬柟寮忔槸鍦╰ask-node涓畾涔変竴涓垨澶氫釜浠誨姟銆傚鏋滄槸閭f牱鐨勮瘽錛宼ask-node琛ㄧ幇涓涓換鍔¤鐢ㄦ埛鎵ц騫朵笖嫻佺▼鎵ц搴旇絳夊緟鐭ラ亾actor瀹屾垚榪欎釜浠誨姟銆傚綋榪欎釜actor瀹屾垚榪欎釜浠誨姟錛屾祦紼嬪畾涔夊簲璇ョ戶緇傚綋鏇村浠誨姟鍦╰ask-node琚畾涔夛紝緙虹渷鐨勮涓烘槸絳夊緟鎵鏈変換鍔$殑瀹屾垚銆?/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.
浠誨姟涔熻瀹氫箟鍦╬rocess-definition涓傛寚瀹氬湪嫻佺▼瀹氫箟涓婄殑浠誨姟鍙互閫氳繃鍚嶇О鏌ヨ騫朵笖鍙傝冧粠鍐呴儴鐨則ask-nodes鎴栬呬粠鍐呴儴actions涓嬌鐢ㄣ備簨瀹炰笂錛屾墍鏈夌殑緇欏畾鍚嶇О浠誨姟錛堜篃鍦╰ask-nodes錛夊彲浠ュ湪嫻佺▼瀹氫箟涓氳繃鍚嶅瓧鏌ヨ銆?/P>

Task names must be unique in the whole process definition. Tasks can be given a priority. This priority will be used as the initial priority for each task instance that is created for this task. TaskInstances can change this initial priority afterwards.
浠誨姟鍚嶇О鍦ㄦ暣涓祦紼嬪畾涔変腑鏄潪閲嶅銆備換鍔″彲浠ヨ鎸囧畾涓涓紭鍏堟潈銆傝繖涓紭鍏堟潈?yōu)畣琚娇鐢ㄥ湪鍒濆鍖栦紭鍏堟潈湄?fù)姣忎釜涓轟換鍔″垱寤虹殑嫻佺▼瀹炰緥銆備換鍔″疄渚嬬劧鍚庡彲浠ヤ慨鏀瑰垵濮嬪寲浼樺厛鏉?/P>

9.2. Task instances
A task instance can be assigned to an actorId (java.lang.String). All task instances are stored in one table of the database (JBPM_TASKINSTANCE). By querying this table for all task instances for a given actorId, you get the task list for that perticular user.
涓涓換鍔″疄渚嬪彲浠ヨ濮旀淳緇欎竴涓猘ctorId(java.lang.String).鎵鏈変換鍔″疄渚嬭鍌ㄥ瓨鍦ㄦ暟鎹簱鐨勪竴涓〃涓?JBPM_TASKINGSTANCE)銆傞氳繃緇欏畾鐨刟ctorId鏉ュ鎵鏈夌殑浠誨姟瀹炰緥鏌ヨ榪欎釜琛紝浣犱負(fù)鐗瑰畾鐢ㄦ埛寰楀埌浠誨姟鍒楄〃銆?/P>

The jBPM task list mechanism can combine jBPM tasks with other tasks, even when those tasks are unrelated to a process execution. That way jBPM developers can easily combine jBPM-process-tasks with tasks of other applications in one centralized task-list-repository.

榪欎釜jBPM浠誨姟鍒楄〃鏈哄埗鍙互緇勫悎jBPM浠誨姟鍜屽叾浠栦換鍔★紝鐢氳嚦褰撹繖浜涗換鍔′簬嫻佺▼鎵ц鏃犲叧銆傞偅縐嶆柟娉昷BPM寮鍙戣呭彲浠ュ緢瀹規(guī)槗鐨勫湪涓涓泦涓殑浠誨姟鍒楄〃浠撳簱涓粍鍚坖BPM嫻佺▼浠誨姟鍜屽叾浠栧簲鐢ㄧ▼搴忋?/P>

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.
浠誨姟瀹炰緥鐢熷懡鍛ㄦ湡鏄畝鍗曠殑錛氬垱寤轟箣鍚庯紝浠誨姟瀹炰緥鍙互闅忔剰鍦板紑濮嬨傛帴鐫錛屼換鍔″疄渚嬪彲浠ヨ緇堢粨錛岃繖鎰忓懗鐫浠誨姟瀹炰緥鍐呮爣蹇椾負(fù)瀹屾垚銆?/P>

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.

娉ㄦ剰瀵歸傚簲鎬с佸媧句笉鏄敓鍛藉懆鏈熺殑緇勬垚閮ㄥ垎銆傛墍浠ヤ換鍔″疄渚嬪彲浠ヨ濮旀淳鎴栬呬笉濮旀淳銆備換鍔″疄渚嬪媧懼湪鐢熷懡鍛ㄦ湡浠誨姟瀹炰緥涓病鏈夊獎鍝嶃?/P>

Task instances are typically created by the process execution entering a task-node (with the method TaskMgmtInstance.createTaskInstance(...)). Then, a user interface component will query the database for the tasklists using the TaskMgmtSession.findTaskInstancesByActorId(...). Then, after collecting input from the user, the UI component calls TaskInstance.assign(String), TaskInstance.start() or TaskInstance.end(...).

TaskMgmtInstance.createTaskInstance(...)
TaskMgmtSession.findTaskInstancesByActorId(...)
TaskInstance.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.
涓涓換鍔″疄渚嬬淮鎶ゅ畠鐨勭姸鎬佸熷姪浜庢棩鏈熷睘鎬э細(xì)create,start 鍜宔nd. 榪欎簺灞炴у彲浠ュ湪浠誨姟瀹炰緥涓氳繃浠栦滑鍒嗗埆鐨刧etter鑾峰緱閫氶亾銆?/P>

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. JBPM_TASKINSTANCE.

9.2.2. Task instances and graph execution 浠誨姟瀹炰緥鍜屽浘褰㈡墽琛?BR>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 is continued.
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 waits in the task node till tasks are created.
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.

 



]]>
script鑴氭湰http://www.tkk7.com/javaora/archive/2005/09/20/13527.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Tue, 20 Sep 2005 07:42:00 GMThttp://www.tkk7.com/javaora/archive/2005/09/20/13527.htmlhttp://www.tkk7.com/javaora/comments/13527.htmlhttp://www.tkk7.com/javaora/archive/2005/09/20/13527.html#Feedback1http://www.tkk7.com/javaora/comments/commentRss/13527.htmlhttp://www.tkk7.com/javaora/services/trackbacks/13527.htmlscript鑴氭湰錛?BR>涓涓猻cript鏄竴涓墽琛孊eanShell鑴氭湰鐨刟ction銆傜己鐪佸湴錛屾墍鏈夋祦紼嬪畾涔夊彉閲忛兘鏄悎娉曠殑騫朵笖鏃犺剼鏈彉閲忓皢琚啓鍏ユ祦紼嬪彉閲忋備笅鍒楄剼鏈彉閲忎篃鏄悎娉曠殑錛?BR>executionContext
token
node
task
taskInstance

<process-definition>
  <event type="node-enter">
     <script>
        System.out.println("this script is enering node"+node);
     </script>
  </event>
  ...
</process-definition>

涓哄畾鍒剁己鐪佸姞杞借涓哄茍涓斿偍瀛樺彉閲忚繘script錛屽彉閲忓厓绱犲彲浠ヨ鐢ㄦ潵浣滀負(fù)script鐨勫瓙鍏冪礌銆傞偅鏍鳳紝鑴氭湰琛ㄨ揪寮忎笉寰椾笉琚斁鍏ヤ竴涓剼鏈殑瀛愬厓绱?expression

<prcession-definition>
  <event type="process-end">
    <expression>
      a = b+c;
    </expression>
    <variable name="XXX" access="write" mapped-name="a"/>
    <variable name="YYY" access="read" mapped-name="b"/>
    <variable name="ZZZ" access="read" mapped-name="c"/>
  </event>
</prcession-definition>

鍦ㄨ剼鏈紑濮嬩箣鍓嶏紝榪欎釜嫻佺▼鍙橀噺YYY鍜孼ZZ灝嗗垎鍒綔涓鴻剼鏈彉閲廱鍜宑浣垮叾鍚堟硶銆傛墍鏈夎剼鏈畬鎴愪箣鍚庯紝鑴氭湰鍙橀噺鍊糰琚瓨鍌ㄨ繘嫻佺▼鍙橀噺XXX.

濡傛灉access鍙橀噺灞炴у寘鍚?read"錛岃繖涓祦紼嬪彉閲忓湪鑴氭湰璧嬪間箣鍓嶅皢琚姞杞戒綔涓轟竴涓剼鏈彉閲忋傚鏋渁ccess鍙橀噺灞炴у寘鍚?write"錛岃繖涓祦紼嬪彉閲忓湪鑴氭湰璧嬪間互鍚庡皢琚姞杞戒綔涓轟竴涓剼鏈彉閲忋?/P>

]]>
Nodetype鑺傜偣綾誨瀷http://www.tkk7.com/javaora/archive/2005/09/20/13496.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Tue, 20 Sep 2005 02:25:00 GMThttp://www.tkk7.com/javaora/archive/2005/09/20/13496.htmlhttp://www.tkk7.com/javaora/comments/13496.htmlhttp://www.tkk7.com/javaora/archive/2005/09/20/13496.html#Feedback3http://www.tkk7.com/javaora/comments/commentRss/13496.htmlhttp://www.tkk7.com/javaora/services/trackbacks/13496.htmlNodetype task-node 鑺傜偣綾誨瀷 浠誨姟鑺傜偣
A task node represents one or more tasks that are to be performed by humans. So when execution arrives in a task node, task instances will be created in the task lists of the workflow participants. After that, the node will behave as a wait state. So when the users perform their task, the task completion will trigger the resuming of the execution. In other words, that leads to a new signal being called on the token.
銆銆涓涓換鍔¤妭鐐硅〃鐜頒負(fù)琚漢鎵榪愯鐨勪竴涓垨澶氫釜浠誨姟銆傛墍浠ュ綋鎵ц鍒拌揪涓涓換鍔¤妭鐐癸紝浠誨姟瀹炰緥灝嗚鍒涘緩鍦ㄥ伐浣滄祦鍒涘緩鑰呬笟鍔″垪琛ㄤ腑銆傛瘯绔燂紝榪欎釜鑺傜偣灝嗕綔涓轟竴涓瓑寰呯姸鎬併傛墍浠ュ綋鐢ㄦ埛榪愯浠栦滑鐨勪換鍔★紝榪欎釜浠誨姟瀹屾垚灝嗚Е鍙戞墽琛岀殑鎭㈠銆傛崲璦涔嬶紝閭e鑷翠竴涓柊鐨勬爣璁板湪閭d釜toke涓婅鍛煎彨銆?/P>

7.3.3. Nodetype state  鑺傜偣綾誨瀷銆鐘舵?BR>A state is a bare-bones wait state. The difference with a task node is that no task instances will be created in any task list. This can be usefull if the process should wait for an external system. E.g. upon entry of the node (via an action on the node-enter event), a message could be sent to the external system. After that, the process will go into a wait state. When the external system send a response message, this can lead to a token.signal(), which triggers resuming of the process execution.
銆銆涓涓姸鎬佹槸瑁擱絳夊緟鐘舵併傝繖涓笉鍚屼竴涓換鍔¤妭鐐圭殑鏄病鏈変換鍔″疄渚嬪皢琚垱寤哄湪浠誨姟浠誨姟鍒楄〃涓傝繖鍙互鏄湁鐢ㄧ殑錛屽鏋滄祦紼嬪簲褰撲負(fù)澶栭儴緋葷粺絳夊緟銆備緥濡傦紝鍦ㄨ妭鐐瑰疄浣撲箣涓婏紙渚濋潬鍦ㄨ妭鐐硅繘鍏ヤ簨浠剁殑涓涓姩浣滐級錛屼竴涓秷鎭皢琚彂閫佸埌澶栭儴緋葷粺銆傛瘯绔燂紝榪欎釜嫻佺▼灝嗚繘鍏ョ瓑寰呯姸鎬併傚綋澶栭儴緋葷粺鍙戦佷竴涓繑鍥炰俊鎭紝榪欏彲浠ュ鑷磘oken.signal(),榪欏皢瑙﹀彂涓涓祦紼嬫墽琛岀殑鎭㈠銆?/P>

7.3.4. Nodetype decision銆鑺傜偣綾誨瀷銆鍐沖畾
Actually there are 2 ways to model a decision. The distinction between the two is based on *who* is making the decision. Should the decision made by the process (read: specified in the process definition). Or should an external entity provide the result of the decision.
銆銆瀹為檯涓婅繖閲屾湁涓ょ鏂規(guī)硶鏉ュ垱寤轟竴涓喅瀹氥備袱鑰呯殑鍖哄埆鏄熀璋佸湪鍋氳繖涓喅瀹氥傘搴旇琚祦紼嬫潵鍐沖畾銆傦紙闄愬畾鍦ㄦ祦紼嬪畾涔変腑錛夋垨鑰呭簲璇ヤ竴涓閮ㄥ疄浣撴敮鎸佸喅瀹氱殑緇撴灉銆?/P>

When the decision is to be taken by the process, a decision node should be used. There are basically 2 ways to specify the decision criteria. Simplest is by adding condition elements on the transitions. Conditions are beanshell script expressions that return a boolean. At runtime the decision node will loop over its leaving transitions (in the order as specified in the xml), and evaluate each condition. The first transition for which the conditions resolves to 'true' will be taken. Alternatively, an implementation of the DecisionHandler can be specified. Then the decision is calculated in a java class and the selected leaving transition is returned by the decide-method of the DecisionHandler implementation.
銆銆褰撹繖涓喅瀹氳嫻佺▼鎵ц錛屼竴涓喅瀹氳妭鐐瑰簲璇ヨ浣跨敤銆傝繖閲屾湁涓や釜鍩烘湰鏂規(guī)硶鏉ラ檺瀹氬喅瀹氭爣鍑嗐傛渶綆鍗曟槸鍦ㄨ穬榪佷笂澧炲姞鏉′歡鍥犵礌銆傛潯浠舵槸Beanshell鑴氭湰琛ㄨ揪寮忚繑鍥炰竴涓猙oolean鍊箋傚湪榪愯鏃惰繖涓喅瀹氳妭鐐瑰皢寰幆紱誨紑璺冭縼錛堥『搴忓拰xml瀹氫箟鐨勪竴鏍鳳級銆備竴涓狣ecisionHandler鐨勫疄鐜拌瀹氫箟鏄彲閫夋嫨鐨勩傞偅涔堬紝鍐沖畾琚綆楀湪java綾諱腑騫朵笖閫夋嫨紱誨紑璺冭縼琚獶ecisionHandler瀹炵幇鐨勫喅瀹氭柟娉曡繑鍥炪?/P>

When the decision is taken by an external party (meaning: not part of the process definition), you should use multiple transitions leaving a state or wait state node. Then the leaving transition can be provided in the external trigger that resumes execution after the wait state is finished. E.g. Token.signal(String transitionName) and TaskInstance.end(String transitionName).
銆銆褰撹繖涓喅瀹氳澶栭儴鎵ц錛堟剰鍛崇潃錛氫笉鏄祦紼嬪畾涔夐儴鍒嗭級錛屼綘搴旇浣跨敤澶氳穬榪佺寮涓涓姸鎬佹垨絳夊緟鑺傜偣銆傞偅涔堣繖涓寮璺冭縼鍦ㄥ閮ㄧ殑闄ゆ硶鍣ㄥ彲浠ヨ鏀寔鎭㈠鎵ц錛屽湪絳夊緟鐘舵佸畬鎴愬悗銆備緥濡傦紝Token.signal(String transitionName) 鍜孴askInstance.end(String transitionName).
7.3.5. Nodetype fork 鑺傜偣綾誨瀷銆鍙?BR>A fork splits one path of execution into multiple concurrent paths of execution. The default fork behaviour is to create a child token for each transition that leaves the fork, creating a parent-child relation between the token that arrives in the fork.
涓涓弶鍒嗙涓涓礬寰勬墽琛屽埌澶氫釜騫惰鐨勬墽琛岃礬寰勩傝繖涓己鐪佺殑鍙夎涓烘槸涓烘瘡涓寮鍙夎穬榪佸垱寤轟竴涓瓙token錛屽垱寤轟竴涓埌杈懼弶涓埗錛嶅瓙鍏崇郴銆?/P>

7.3.6. Nodetype join 鑺傜偣綾誨瀷銆鍚堝茍
The default join assumes that all tokens that arrive in the join are children of the same parent. This situation is created when using the fork as mentioned above and when all tokens created by a fork arrive in the same join. A join will end every token that enters the join. Then the join will examine the parent-child relation of the token that enters the join. When all sibling tokens have arrived in the join, the parent token will be propagated over the (unique!) leaving transition. When there are still sibling tokens active, the join will behave as a wait state.
緙虹渷鐨勫悎騫跺亣璁炬墍鏈夌殑token鍒拌揪鍚堝茍鐐癸紝榪欎簺閮介兘鏄浉鍚岀埗鐨勫瓙銆傝繖涓儏褰㈣鍒涘緩濡傛垜浠互涓婃彁鍒扮殑浣跨敤鍙夊茍涓斿綋鎵鏈夎fork鍒涘緩鐨勬墍鏈塼oken鍒拌揪鐩稿悓鐨刯oin.銆涓涓猨oin灝嗙粨鏉熸瘡涓繘鍏oin鐨則oken.銆閭d箞榪欎釜join灝嗘鏌ヨ繘鍏oin鐨則oken鐖訛紞瀛愬叧緋匯傚綋鎵鏈夌殑鍏勫紵濮愪滑tokens嬋媧伙紝榪欎釜紱誨紑鐨勮穬榪乯oin灝嗕紶鎾傚綋榪欓噷榪樻湁鍏勫紵tokens嬋媧伙紝榪欎釜join灝嗕綔涓轟竴涓瓑寰呯姸鎬併?/P>

7.3.7. Nodetype node銆鑺傜偣綾誨瀷銆鑺傜偣
The type node serves the situation where you want to write your own code in a node. The nodetype node expects one subelement action. The action is executed when the execution arrives in the node. The code you write in the actionhandler can do anything you want but it is also responsible for propagating the execution.
鑺傜偣綾誨瀷鏈嶅姟鍦ㄤ綘鎯沖啓浣犺嚜宸辯殑浠g爜鍦ㄨ妭鐐逛腑銆傝繖涓妭鐐圭被鍨嬭妭鐐規(guī)湡寰呬竴涓瓙鍏冪礌琛屼負(fù)銆傝繖涓涓鴻鎵ц褰撴墍鏈夋墽琛屽埌杈捐繖涓妭鐐廣傚湪actionHandler涓綘鍐欑殑浠g爜鍙互鍋氫綘鎯沖仛鐨勪換浣曚簨鎯咃紝褰撴椂瀹冩槸涔熸槸涓涓矗浠諱負(fù)鎵ц浼犳挱銆?/P>

This node can be used if you want to use a JavaAPI to implement some functional logic that is important for the business analyst. By using a node, the node is visible in the graphical representation of the process. For comparison, actions --covered next-- will allow you to add code that is invisible in the graphical representation of the process, in case that logic is not important for the business analyst.
榪欎釜鑺傜偣鍙互琚嬌鐢紝濡傛灉浣犲皢浣跨敤JavaAPI鏉ュ疄鐜頒竴浜涘姛鑳介昏緫錛屽閫昏緫鍒嗘瀽鏄噸瑕佺殑. 浣滀負(fù)浣跨敤涓涓猲ode,node 鏄彲浠ヨ鐨勫湪嫻佺▼鍥懼艦琛ㄧ幇涓備負(fù)瀵規(guī)瘮錛宎ctions-convered next--灝嗗厑璁稿湪嫻佺▼鍥懼艦琛ㄧ幇涓鍔犱笉鍙鐨勪唬鐮侊紝涓囦竴瀵逛綘閫昏緫鍒嗘瀽鏄笉閲嶈鐨?/P>


 



]]>
org.jbpm.indentity.xml鍖呬箣 IdentityXmlParser綾?/title><link>http://www.tkk7.com/javaora/archive/2005/09/19/13456.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Mon, 19 Sep 2005 13:51:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/19/13456.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13456.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/19/13456.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13456.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13456.html</trackback:ping><description><![CDATA[<P>涓変釜瀛楁錛?BR>1. List  entities<BR>2. Map user<BR>3. Map groups<BR>榪欎釜綾諱富瑕佷粠涓涓祦鏂囦歡涓幏寰?BR>users鐢ㄦ埛鍒楄〃  Map鍒楄〃  name<key>,user<value>銆?user : name email password<BR>緇勫垪琛?nbsp;  Map鍒楄〃  name<key>,group<value>銆?group : name type<BR>鐖剁粍鍒楄〃 <BR>memberships鍒楄〃<BR><BR>榪欎釜綾諱富瑕佺敤鏉ヨВ鏋怷ML嫻佷腑鐨勭敤鎴?緇?鐖剁粍 浠ュ強浼?xì)鍛樈{夌瓑鎿嶄綔鐨勩?/P><img src ="http://www.tkk7.com/javaora/aggbug/13456.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-09-19 21:51 <a href="http://www.tkk7.com/javaora/archive/2005/09/19/13456.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Token-ProcessInstance-ProcessDefinition-ContextInstance-TaskInstance鏉傝http://www.tkk7.com/javaora/archive/2005/09/19/13377.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Mon, 19 Sep 2005 03:49:00 GMThttp://www.tkk7.com/javaora/archive/2005/09/19/13377.htmlhttp://www.tkk7.com/javaora/comments/13377.htmlhttp://www.tkk7.com/javaora/archive/2005/09/19/13377.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/13377.htmlhttp://www.tkk7.com/javaora/services/trackbacks/13377.htmlClass Token
represents one path of execution and maintains a pointer to a node in the ProcessDefinition. Most common way to get a hold of the token objects is with ProcessInstance.getRootToken() or ProcessInstance.findToken(String).
鍦ㄦ祦紼嬪畾涔変腑琛ㄧ幇涓涓墽琛岃礬寰勫拰緇存寔涓涓寚紺哄櫒緇欎竴涓妭鐐廣?BR>ProcessInstance.getRootToken()
ProcessInstance.findToken(String)

signal()
    provides a signal to the token. this method activates this token and leaves the current state over the default transition.
    鍑嗗涓涓俊鍙風(fēng)粰鏍囪銆傝繖涓柟娉曟縺媧昏繖涓爣璁板茍涓旂寮褰撳墠鐨勭姸鎬佽秺榪囩己鐪佺殑璺冭縼銆?BR>------------------------------------
Class ProcessInstance
is one execution of a ProcessDefinition. To create a new process execution of a process definition, just use the ProcessInstance(ProcessDefinition).
鏄竴涓祦紼嬪畾涔夌殑鎵ц銆?BR>ProcessInstance(ProcessDefinition)
---------------------------------------
Class ProcssDefinition
鍒涘緩涓涓狿rocessDefinition
parseParResource(String parResource)
parseParZipInputStream(ZipInputStream zipInputStream)
parseXmlInputStream(InputStream inputStream)
parseXmlReader(Reader reader)
parseXmlResource(String resource)
parseXmlString(String string)
-----------------------------
Class ContextInstance
maintains all the key-variable pairs for a process instance. You can obtain a ContextInstance from a processInstance from a process instance like this :
 ProcessInstance processInstance = ...;
 ContextInstance contextInstance = processInstance.getContextInstance();
涓烘祦紼嬪疄渚嬬淮鎸佹墍鏈夌殑key-variable瀵廣?/P>

ContextInstance  contextInstance = ProcessInstance.getContextInstance();
contextInstance.setVariable("amount",new Integer(500));
contextInstance.setVariable("reason","I met my deadline");

--------------------------
浠誨姟鑺傜偣錛?BR><task-node name="t">
  <task name="change nappy">
    <assignment  class="org.jbpm.tutorial.taskmgmt.NappyAssignmentHandler"/>
  </task>
  <transition to="end">
</task-node>

TaskInstance taskInstance = (TaskInstance)processInstance.getTaskMgmtInstance().getTaskInstances().iterator().next();

taskInstance.end(); //鏍囧織榪欎釜浠誨姟宸茬粡緇撴潫

--------------------------------------------



]]>
org.jbpm.identity.security鍖?/title><link>http://www.tkk7.com/javaora/archive/2005/09/18/13311.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 18 Sep 2005 13:26:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/18/13311.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13311.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/18/13311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13311.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13311.html</trackback:ping><description><![CDATA[<P>security瀹夊叏鍖呭簲璇ユ槸identity韜喚妯″潡涓緢閲嶈鐨勭粍鎴愰儴鍒嗭紝鍏朵腑涓昏鍖呭惈浠ヤ笅綾伙細(xì)<BR>涓銆丄uthenticatedUser璁よ瘉鐢ㄦ埛綾伙細(xì)鍏朵腑寰堢畝鍗曪紝灝辨槸gettter鍜宻etter 鏂規(guī)硶錛岃緗拰鑾峰彇authenticatedUser銆?BR> 銆銆鍏朵腑鐨刟uthenticatedUser鏄竴涓猅hreadLocal銆?BR>浜屻両dentityLoginModule韜喚鐧婚檰妯″潡綾伙細(xì)<BR>銆銆瀹炵幇LoginModule鎺ュ彛銆傝繖涓被鍜宩avax.security.auth.*絳夊寘緇撳悎闈炲父绱у瘑銆?BR>涓夈両dentityPolicy韜喚鏀跨瓥綾伙細(xì)鎵╁睍Policy綾匯?BR>鍥涖両dentityService韜喚鏈嶅姟鎺ュ彛錛氶獙璇佺敤鎴峰拰鑾峰彇User<BR>浜斻丳assword鍜孶sename銆JavaBean<BR>------------------------------------------------------------<BR><BR>琛ュ厖鐭ヨ瘑錛?BR>錛?<STRONG>ThreadLocal<BR>This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its <TT>get</TT> or <TT>set</TT> method) has its own, independently initialized copy of the variable. <TT>ThreadLocal</TT> instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID). <BR></STRONG>榪欐敮鎸佹敮鎸乼hread-local 鍙橀噺銆傝繖浜涘彉閲忎笉鍚屼簬瀹冧滑甯哥敤鐨勫搴旂墿錛屽湪閭f瘡涓涓嚎紼嬭幏寰椾竴涓?渚濋潬get鎴杝et鏂規(guī)硶)鎷ユ湁瀹冭嚜宸辯殑錛岀嫭绔嬪湴鍒濆鍖栧鍒惰繖涓彉閲忋俆hreadLocal瀹炰緥鏄吀鍨嬪湴縐佹湁闈欐佸瓧孌碉紝瀹冨笇鏈涜仈緋葷姸鎬佷嬌鐢ㄧ嚎紼?渚嬪錛涗竴涓敤鎴稩D鎴栦簨鍔D)銆?BR><STRONG><BR></STRONG></P><img src ="http://www.tkk7.com/javaora/aggbug/13311.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-09-18 21:26 <a href="http://www.tkk7.com/javaora/archive/2005/09/18/13311.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>org.jbpm.identity.assignment鍖呭垎鏋?/title><link>http://www.tkk7.com/javaora/archive/2005/09/18/13307.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 18 Sep 2005 06:08:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/18/13307.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13307.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/18/13307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13307.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13307.html</trackback:ping><description><![CDATA[<P>JBpm璧嬪煎寘錛?BR>涓銆丒xpressionAssignmentException綾伙細(xì)琛ㄨ揪寮忚祴鍊煎紓甯哥被 鎵╁睍浜哛untimeException<BR>浜屻丒xpressionAssignmentHandler綾伙細(xì) 琛ㄨ揪寮忚祴鍊煎鐞嗗櫒綾?瀹炵幇AssignmentHandler鎺ュ彛銆?BR>銆銆涓昏瀛楁錛?BR>銆銆銆1.String expression;<BR>            2.ExecutionContext executionContext<BR> 銆銆   3.TermTokenizer tokenizer<BR>            4.Entity entity<BR> 銆銆璇硶錛歴yntax : first-term --> next-term --> next-term --> ... --> next-term<BR>銆銆銆first-term ::= previous |<BR> *                swimlane(swimlane-name) |<BR> *                variable(variable-name) |<BR> *                user(user-name) |<BR> *                group(group-name)<BR><BR>* next-term ::= group(group-type) |<BR> *               member(role-name)<BR><BR>涓夈丒xpressionSession鎺ュ彛<BR>鍥涖乀ermTokenizer綾伙細(xì)"-->"</P><img src ="http://www.tkk7.com/javaora/aggbug/13307.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-09-18 14:08 <a href="http://www.tkk7.com/javaora/archive/2005/09/18/13307.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>org.jbpm.identity.hibernate鍖呬箣PermissionUserType綾?/title><link>http://www.tkk7.com/javaora/archive/2005/09/18/13304.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 18 Sep 2005 05:45:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/18/13304.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13304.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/18/13304.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13304.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13304.html</trackback:ping><description><![CDATA[PermissionUserType綾繪槸涓涓狧ibernate緇勫悎鐢ㄦ埛鑷畾涔夋暟鎹被鍨嬶細(xì)<BR>瀹炵幇浜嗘娊璞℃帴鍙ompositeUserType錛?BR>鍏朵腑瀹炵幇鐨勬槸涓涓猄tring[] 鏁版嵁綾誨瀷錛屽叾涓皢Java鐨凱ermission瀵硅薄鍜岃繖涓暟鎹被鍨嬬粦瀹氬湪涓璧楓?BR><BR>hbm.xml褰卞皠鏂囦歡涓?BR><set name="permissions" cascade="all" table="JBPM_ID_PERMISSIONS"><BR>      <key column="ENTITY_" foreign-key="none" /><BR>      <element type="org.jbpm.identity.hibernate.PermissionUserType"><BR>        <column name="CLASS_"/><BR>        <column name="NAME_"/><BR>        <column name="ACTION_"/><BR>      </element><BR>    </set>   <BR>涓浜涚壒孌婄殑緇勫悎錛屼嬌鐢℉ibernate鐨勭粍鍚堢敤鎴瘋嚜瀹氫箟綾誨瀷錛屽湪浣跨敤涓婅繕鏄緢鏂逛究鐨勩傜洰鍓嶇殑寮鍙戜腑浼間箮榪欎釜鐢ㄧ殑姣旇緝?yōu)畱锛屽彲鏄湪鐗瑰畾鍦哄悎涓嬪彲鑳界敤鐨勬瘮杈冨鐨勩?img src ="http://www.tkk7.com/javaora/aggbug/13304.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-09-18 13:45 <a href="http://www.tkk7.com/javaora/archive/2005/09/18/13304.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>org.jbpm.indentity.hibernate鍖呬箣IdentitySessionFactory綾?/title><link>http://www.tkk7.com/javaora/archive/2005/09/18/13302.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 18 Sep 2005 04:16:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/18/13302.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13302.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/18/13302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13302.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13302.html</trackback:ping><description><![CDATA[IdentitySessionFactory綾誨熀鏈笂綾諱技浜嶩ibernate 鐨凷essionFactory錛孞bpm涓緢澶氶噰鐢ㄤ簡綾諱技浜嶴essionFactory鐨勬満鍒躲傚叾涓湁鑾峰彇IndentitySession鐨勫嚑涓柟娉曘傚叾涓繕鏈変竴涓猠victCachedIdentities()涔熶笉鐭ラ亾鏈変粈涔堢敤娉曪紝鍙兘鏄皢緙撳瓨涓殑鏁版嵁榪涜娓呯┖鐨勬搷浣溿?img src ="http://www.tkk7.com/javaora/aggbug/13302.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-09-18 12:16 <a href="http://www.tkk7.com/javaora/archive/2005/09/18/13302.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>org.jbpm.identity.hibernate鍖呬箣IdentitySession綾?/title><link>http://www.tkk7.com/javaora/archive/2005/09/18/13301.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sun, 18 Sep 2005 04:05:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/18/13301.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13301.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/18/13301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13301.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13301.html</trackback:ping><description><![CDATA[涓銆佽繖涓被瀹炵幇浜咺ndentityService鎺ュ彛鍜孍xpressionSession鎺ュ彛錛?BR>1.IndentityService鎺ュ彛錛?BR>鏍¢獙鐢ㄦ埛鏂規(guī)硶錛歄bject verify(String userName, String pwd);<BR>鏍規(guī)嵁鐢ㄦ埛id鑾峰緱User錛歎ser getUserById(Object userId);<BR>2.ExpressionSession鎺ュ彛錛?BR> Group getGroupByName(String groupName);<BR>User getUserByName(String userName);<BR>浜屻佸寘鍚瓧孌碉細(xì)<BR>銆銆Session session<BR>        Transaction transaction<BR>涓夈佹柟娉曪細(xì)<BR>錛?鍏朵腑鐨剉erify(String userName,String pwd)鐨勫鐞嗘槸閫氳繃浼犻掔敤鎴峰悕鍜屽瘑鐮佽幏寰椾竴涓猆ser鍒楄〃錛屽鏋滀負(fù)絀烘垨鑰卻ize()涓猴紣錛岃繑鍥炲紓甯革紝鍚﹀垯get(0)鑾峰緱瀵硅薄錛圲ser錛夈?BR>錛?閲囩敤浜哠ession鐨刧et鏂規(guī)硶鑾峰彇涓涓猆ser<BR>錛?鍏朵腑瀹炵幇浜嬪姟鐨勫紑濮嬨佺‘璁ゃ佸洖婊氭柟娉?BR>錛?瀹炵幇浜嗙敤鎴楓佺粍銆佸疄浣撶殑淇濆瓨鍔犺澆絳夋柟娉?BR>錛?榪樻湁涓鍫嗙殑鑾峰緱List鐨勬柟娉曪細(xì)<BR><img src ="http://www.tkk7.com/javaora/aggbug/13301.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-09-18 12:05 <a href="http://www.tkk7.com/javaora/archive/2005/09/18/13301.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>org.jbpm.identity.hibernate鍖呬箣涓綾籌dentitySchema.javahttp://www.tkk7.com/javaora/archive/2005/09/18/13298.htmljava涓栫晫鐣呰皥java涓栫晫鐣呰皥Sun, 18 Sep 2005 03:42:00 GMThttp://www.tkk7.com/javaora/archive/2005/09/18/13298.htmlhttp://www.tkk7.com/javaora/comments/13298.htmlhttp://www.tkk7.com/javaora/archive/2005/09/18/13298.html#Feedback0http://www.tkk7.com/javaora/comments/commentRss/13298.htmlhttp://www.tkk7.com/javaora/services/trackbacks/13298.html銆銆delimiter 瀹氱晫絎?BR>Fields錛?BR>  private static final String IDENTITY_TABLE_PREFIX = "JBPM_ID_";
  Configuration configuration = null;
  Properties properties = null;
  Dialect dialect = null;
  Mapping mapping = null; 
  String[] createSql = null;銆//鍒涘緩SQL鑴氭湰
  String[] dropSql = null; //鍒犻櫎SQL鑴氭湰
  String[] cleanSql = null; //娓呴櫎SQL鑴氭湰

銆銆閫氳繃榪欎釜綾誨彲浠ュ垱寤烘暟鎹簱琛ㄧ粨鏋勶紝閫氳繃Hibernate鐨刢onfiguration.generateSchemaCreationScript(dialect)鏉ュ垱寤篠QL琛ㄧ粨鏋剆chema鐨凷QL鑴氭湰錛岄氳繃Jbpm鐗瑰畾鐨別xecute鏂規(guī)硶錛圝DBC錛夛紝灝嗕紶鍏ョ殑SQL鑴氭湰鎵цexecuteUpdate鎵ц琛ㄧ粨鏋勭殑鎿嶄綔銆?BR>銆銆瑕佸畬鎴愯繖涓搷浣滐紝瑕佸厛淇敼hibernate.cfg.xml閰嶇疆鏂囦歡銆?BR>

]]>
org.jbpm.identity鍖?/title><link>http://www.tkk7.com/javaora/archive/2005/09/17/13256.html</link><dc:creator>java涓栫晫鐣呰皥</dc:creator><author>java涓栫晫鐣呰皥</author><pubDate>Sat, 17 Sep 2005 13:33:00 GMT</pubDate><guid>http://www.tkk7.com/javaora/archive/2005/09/17/13256.html</guid><wfw:comment>http://www.tkk7.com/javaora/comments/13256.html</wfw:comment><comments>http://www.tkk7.com/javaora/archive/2005/09/17/13256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/javaora/comments/commentRss/13256.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/javaora/services/trackbacks/13256.html</trackback:ping><description><![CDATA[<P>(org.jbpm.identity)韜喚鍖呭寘鍚湁濡備笅鍑犱釜綾伙細(xì)<BR>涓銆丒ntity 瀹炰綋綾伙細(xì)榪欎釜綾諱綔涓簎sers<鐢ㄦ埛>groups<緇?gt;鍜宮emberships<鎴愬憳>鐨勮秴綾伙紝鐢ㄦ潵綆$悊鍚嶇О鍜屾潈闄愮殑澧炲姞鍒犻櫎鍜岃幏鍙栥傚叾涓敤鍒頒簡jdk鐨凱ermission綾匯傜洰鍓嶈繕涓嶇煡閬撹繖涓鍏蜂綋鏉冮檺鐨勬帶鍒舵湁浠涔堜綔鐢紵<BR>浜屻丟roup緇勭被錛氳繖涓被鏄疎ntity鐨勭戶鎵垮瓙綾伙紝榪欎釜綾諱富瑕佺敤浜庡尯鍒嗗眰嬈$粍銆佸畨鍏ㄨ鑹插拰鍏朵粬銆?nbsp; <BR>  (1)涓昏鍖呭惈浠ヤ笅鍑犱釜Filed錛?BR>     protected String type = null;<BR>     protected Group parent = null; //鐖跺氨鏄嚜宸?BR>     protected Set children = null; //瀛愭槸涓涓泦鍚堬紝鍏朵腑鐨勫厓绱犱篃鏄疓roup<BR>     protected Set memberships = null; //浼?xì)鍛?BR>   (2)JBpm鐨勭被鍐呴儴鏂規(guī)硶鐨勫懡鍚嶈繕鏄緢涓嶉敊鐨勶細(xì)<BR>    public Set getUsersForMembershipName(String membershipName) 寰堝鏄撶悊瑙d負(fù)閫氳繃membershipName鏉ヨ幏寰楁墍鏈夌殑鐢ㄦ埛銆?榪欎釜鍐呬笉浠呬粎鏄畝鍗曠殑JavaBean鐨剆etter鍜実etter錛岃屾槸榪涜涓浜涘紩鐢崇殑鎿嶄綔錛屼緥濡傝幏鍙栫敤鎴蜂互鍙奱ddXXX絳夋搷浣溿?BR>   (3)涓庝箣鐩稿搴旂殑hibernate Mapping鏂囦歡Group.hbm.xml鍏朵腑涔熸湁鍑犱釜鍦版柟錛屽煎緱娉ㄦ剰錛屽叾瀹炶繖涓湪Jbpm涓槸澶ч噺浣跨敤鐨勶細(xì)<BR>  <CLASS <BR name="org.jbpm.identity.Group">         table="JBPM_ID_GROUP"<BR>         discriminator-value="G"><BR>    ....<BR>  <DISCRIMINATOR column="CLASS_" type="char" /><BR>  榪欓噷琛ㄧず鐨勬槸鍦↗BPM_ID_GROUP琛ㄤ腑鐨凜LASS_瀛楁絳変簬G鐨勪負(fù)Group鐨勫獎灝勫璞°傝繖閲屾垜浠湪浣跨敤涓涓〃鐨勪笉鍚岀被鍨?涓涓瓧孌靛搴斾笉鍚岀殑鍊?灝卞彲浠ヨ〃紺轟笉鍚岀殑綾誨瀷瀵硅薄銆傝繖涓鐐瑰緢鍊煎緱鎴戜滑瀛︿範(fàn)鐨勩傚叾浠栧煎緱鎴戜滑鍏蟲敞鐨勬槸瀹冮噰鐢ㄧ殑闆嗗悎綾誨瀷鐨勬搷浣滄柟寮忥紝鍦ㄦ垜浠互鍓嶇殑寮鍙戜腑榪欑鍋氭硶騫跺煎緱閲囩敤鐨勩?BR>涓夈丮embership鎴愬憳綾伙細(xì)瀹冩槸鐢ㄦ埛鍜岀粍涔嬮棿鐨勪竴涓仈緋葷殑妗ユ銆備細(xì)鍛樼殑鍚嶇О浠h〃瑙掕壊鐨勫悕縐般備竴涓細(xì)鍛樺彲鑳芥槸涓涓粍緇囩殑浣嶇疆錛屾墍浠ユ潈闄愬線寰浜庝細(xì)鍛樿仈緋匯備細(xì)鍛樼殑鍚嶅瓧鑳界敤鏉ュ仛瑙掕壊鐨勫悕瀛椼備笉鍚岀殑浼?xì)鍛樻潵鎷呭綋涓嶅悓鐨勮鑹层?BR>protected  String role = null;<BR>protected Group group = null;<BR>protected User user = null;<BR> 榪欎釜綾繪病鏈夐噰鐢ㄤ紶緇熺殑鏋勯犲瓙澶嶇敤鐨勬柟寮忥紝鑰屾槸鐢ㄥ緢浜嗗緢澶氱殑create()鏂規(guī)硶錛屾湁浜涙柟娉曡浜烘劅瑙夋湁浜涜尗鐒朵笉鐭ユ墍鎺紝涓嶈繃鐩存帴鐩稿叧鐨勪唬鐮侊紝涔熷氨鏄庣櫧浜嗐?BR>銆銆鍏朵腑褰卞皠鏂囦歡涔熶嬌鐢ㄤ簡discriminator(閴村埆鑰?鐨勫姛鑳斤紝浠ュ強many-to-one鍜宻et闆嗗悎鐨勫仛娉?BR>鍥涖乁ser綾伙細(xì)鍖呭惈鏈変笁涓瓧孌碉細(xì)password email  浠ュ強Set memeberships銆?BR>銆銆浠ヤ笅鏄氳繃涓ょ鏂瑰紡鑾峰緱Groups鐨勬柟娉曪紝涓涓槸閫氳繃緇勭殑綾誨埆錛屼竴縐嶆槸閫氳繃鎴愬憳鍚嶇О錛堣鑹插悕縐幫級<BR>銆銆public Set getGroupsForGroupType(String groupType)<BR>銆銆public Set getGroupsForMembershipName(String membershipName)<BR><BR>銆銆閫氳繃瑙傚療錛屾垜浠彂鐜拌繖閲屽叾瀹炴湁浠ヤ笅鍑犱釜瀵硅薄錛欵ntity Group Memebership User Permission銆傚叾涓璆roup銆丮emebership銆乁ser閮芥槸Entity閮芥槸瀛愮被鍜岀埗綾葷殑鍏崇郴銆侲ntity鍜孭ermission鏄竴瀵瑰鐨勫叧緋伙紝琛ㄧず涓涓疄浣撴嫢鏈夊悇縐嶄笉鍚岀殑鏉冮檺錛屽悓鏍峰叾浠栫殑Group絳夊瓙綾伙紝涔熶笌Permission閮芥槸涓瀵瑰鐨勫叧緋匯侴roup 鍜孧emeber鏄竴瀵瑰鐨勶紝涓涓粍鍏鋒湁涓嶅悓鐨勮鑹詫紙鎴愬憳錛夈侻embership涓嶶ser鍜孏roup鏄瀵逛竴鐨勫叧緋匯俇ser鍜孧embership涔嬮棿鏄竴瀵瑰鐨勫叧緋匯?BR><BR>鍏朵腑娑夊強鐨勮〃鏈夛細(xì)<BR>jbpm_id_group;<BR>jbpm_id_membership;<BR>jbpm_id_user;<BR><BR></P><img src ="http://www.tkk7.com/javaora/aggbug/13256.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-09-17 21:33 <a href="http://www.tkk7.com/javaora/archive/2005/09/17/13256.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://www-c559.com" target="_blank">久久综合亚洲鲁鲁五月天</a>| <a href="http://ittenyear.com" target="_blank">亚洲精品国产综合久久一线</a>| <a href="http://shaiyahx.com" target="_blank">亚洲国语精品自产拍在线观看</a>| <a href="http://szgreater.com" target="_blank">一个人看的www免费高清</a>| <a href="http://www96008.com" target="_blank">丁香亚洲综合五月天婷婷</a>| <a href="http://ddhlj.com" target="_blank">色欲aⅴ亚洲情无码AV</a>| <a href="http://455zx.com" target="_blank">四虎影院永久免费观看</a>| <a href="http://dqcjlb.com" target="_blank">老司机精品视频免费</a>| <a href="http://pjappuiehjdkhsjkssd2.com" target="_blank">免费一级黄色毛片</a>| <a href="http://xiaomaomi8.com" target="_blank">免费看一级一级人妻片</a>| <a href="http://by1687.com" target="_blank">亚洲人成无码www久久久</a>| <a href="http://juytv.com" target="_blank">三级黄色片免费看</a>| <a href="http://97aimeili.com" target="_blank">久久亚洲AV成人出白浆无码国产</a>| <a href="http://mangaou.com" target="_blank">97在线视频免费播放</a>| <a href="http://xy996688.com" target="_blank">亚洲一级高清在线中文字幕</a>| <a href="http://w5524.com" target="_blank">免费无遮挡无码视频网站</a>| <a href="http://bomilon.com" target="_blank">国产亚洲精品国产福利在线观看 </a>| <a href="http://yzxjk.com" target="_blank">国产男女猛烈无遮挡免费视频网站</a>| <a href="http://41xjj.com" target="_blank">亚洲GV天堂无码男同在线观看</a>| <a href="http://786087.com" target="_blank">免费永久国产在线视频</a>| <a href="http://ljdst.com" target="_blank">和老外3p爽粗大免费视频</a>| <a href="http://6f2igoa4.com" target="_blank">亚洲2022国产成人精品无码区</a>| <a href="http://sflhb.com" target="_blank">中文字幕人成人乱码亚洲电影</a>| <a href="http://sh-shule.com" target="_blank">国产在线国偷精品免费看</a>| <a href="http://600c63.com" target="_blank">亚洲精品影院久久久久久</a>| <a href="http://newbuybay.com" target="_blank">成人性生交视频免费观看</a>| <a href="http://wwwee2.com" target="_blank">一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 </a>| <a href="http://szqsnt.com" target="_blank">亚洲乱妇熟女爽到高潮的片</a>| <a href="http://doctor5470.com" target="_blank">亚洲国产中文字幕在线观看</a>| <a href="http://lh726.com" target="_blank">免费人成网站在线观看不卡</a>| <a href="http://www-xg5777.com" target="_blank">亚洲无成人网77777</a>| <a href="http://ddtase.com" target="_blank">国产一区二区三区无码免费</a>| <a href="http://shulan88.com" target="_blank">97无码人妻福利免费公开在线视频 </a>| <a href="http://liangdy.com" target="_blank">国产亚洲视频在线</a>| <a href="http://1877808.com" target="_blank">国产精品亚洲精品日韩已满</a>| <a href="http://o091i.com" target="_blank">18国产精品白浆在线观看免费</a>| <a href="http://3333seav.com" target="_blank">337P日本欧洲亚洲大胆精品</a>| <a href="http://xiaomaomi8.com" target="_blank">亚洲精品tv久久久久久久久</a>| <a href="http://66cws.com" target="_blank">最新中文字幕免费视频</a>| <a href="http://222222se.com" target="_blank">国产真人无码作爱免费视频</a>| <a href="http://xyyfamily.com" target="_blank">一本色道久久88亚洲精品综合</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>