欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
jbpm指南部分學(xué)習

還沒(méi)進(jìn)行實(shí)際實(shí)踐,只是就個(gè)人理解對此部分進(jìn)行翻譯,肯定會(huì )有很多疏漏錯誤地方,希望諒解:

同時(shí)希望各位給予寶貴意見(jiàn)。謝謝!互相學(xué)習。接下來(lái)會(huì )進(jìn)一步把實(shí)踐部分補上,同時(shí)對錯誤地方進(jìn)行補充說(shuō)明。

下面開(kāi)始學(xué)習jbpmtutorial部分的學(xué)習。

1、介紹部分:

JBpm是一個(gè)工作流管理系統。下面的use case圖顯示在jbpm和所有參與者之間調用關(guān)系。

 《use case 圖》可以參看jbpm站點(diǎn)上的圖

 《use case 圖》可以參看jbpm站點(diǎn)上的圖

 《use case 圖》可以參看jbpm站點(diǎn)上的圖

工作流管理系統針對不同人員具有完全不同的含義,下面將具體解釋工作流管理系統四個(gè)層次上的核心職責。

Jbpmprocess archives 作為輸入,一個(gè)process archive是一種業(yè)務(wù)流程的規則描述。在一個(gè)process archive被部署以后,jbpm就能夠管理這個(gè)流程的具體執行。“管理執行”的意思是指追蹤流程狀態(tài)(狀態(tài)層次);存儲流程執行的信息;集成或者定制程序的邏輯例如發(fā)email,與ERP系統整合(程序邏輯層);允許用戶(hù)通過(guò)提交表單形式完成任務(wù)(用戶(hù)接口層)。

主要職責:一個(gè)工作流系統的主要職責就是維護過(guò)程執行中的狀態(tài)。Jbpm的狀態(tài)模型以圖形形式表現,它的主要成員就是節點(diǎn)和變遷(不知道翻譯的對不對,參考一些書(shū)中petri net的翻譯),一個(gè)狀態(tài)是一個(gè)節點(diǎn)的樣本。

運行時(shí)交互(runtime interaction):重要的交互包括:開(kāi)始一個(gè)過(guò)程定義的實(shí)例和發(fā)出狀態(tài)結束的信號。這兩種jbpm交互的結果是計算出過(guò)程實(shí)例的下一個(gè)狀態(tài)。

Action:狀態(tài)圖,提供業(yè)務(wù)流程的結構,Action是程序邏輯的一些區塊(部分),程序邏輯被執行在流程中的事件之上,有三種類(lèi)型事件:進(jìn)去一個(gè)節點(diǎn),離開(kāi)一個(gè)節點(diǎn),進(jìn)行一次變遷,當jbpm計算下一個(gè)狀態(tài)時(shí)候,一些事件被觸發(fā)。

Process archives:主要有用的文件就是processdefinition.xml。分析這個(gè)文件和存儲它在數據庫中的動(dòng)作叫做部署一個(gè)流程。前面有所介紹,這里就不多介紹了。

接下來(lái)是介紹一個(gè)創(chuàng )建process archive的例子。很容易就可以看到,只要看過(guò)一些petri net知識的。

2、部署 process archive

Jbpm把過(guò)程定義存儲在數據庫中。所以部署一個(gè)過(guò)程到jbpm中事實(shí)上也就是意味著(zhù)分析過(guò)程定義文件processdefinition.xml并且把它存儲到jbpm數據庫中??梢酝ㄟ^(guò)兩種方式完成:

1、                  運行ant 任務(wù)deploypar通過(guò)文件集合(如processdefinition.xml還有其他from文件)創(chuàng )建Process archive,deploypar部署一個(gè)process arhive到數據庫,deployparjbpm.properties中獲取相關(guān)屬性值。這個(gè)文件主要描述jbpm的配置選項,其中包括數據庫(process archive部署到的數據庫),更多關(guān)于此文件(jbpm.properties)的信息請參看配置部分。另外自己加一點(diǎn)小說(shuō)明,可以參看build.xml文件里,targer name=deploy.process.archives”部分。哪里有上面的script,包括引入的屬性文件以及部署所包含的文件。

 

 

 

2、                  通過(guò)程序來(lái)進(jìn)行部署

 

 

 

代碼如下:

 

 

 

// create a process archive input stream

String resource = "payraise/processdefinition.xml";

InputStream is = PayRaiseTest

                   .class

                   .getClassLoader()

                .getResourceAsStream(resource);

ArchiveBuilder ab = new ArchiveBuilder(is);

JarInputStream jis = ab.getJarInputStream();

    

// deploy the process

DefinitionService ds = JbpmServiceFactory

                         .getInstance()

                         .openDefinitionService();

ds.deployProcessArchive(jis);

ds.close();

 

 

 

雖然上面代碼還沒(méi)看懂,大致先知道有這么一回事吧。

 

 

 

需要注意的是:這代碼也是用到jbpm.properties這個(gè)配置文件,包括數據庫部分。

重點(diǎn):默認狀態(tài)下,jbpm配置到內存數據庫中,這樣只是為了方便進(jìn)行測試,但是當你用ant task部署流程時(shí)候,這似乎沒(méi)有什么太大作用,在這種情況下,你的數據庫就在你的運行時(shí)內存中。所以只有在ant task完畢時(shí)才可以進(jìn)入部署結果。

3、                  開(kāi)啟一個(gè)流程實(shí)例

在打包和部署之后,下面的顯示的代碼是教你如何啟動(dòng)一個(gè)流程實(shí)例:

ExecutionService executionService = 

    JbpmServiceFactory.getInstance().openExecutionService("AlbertEinstein");

executionService.startProcessInstance( "payraise" );

executionService.close();

 

 

 

4、                  獲取任務(wù)列表

一個(gè)token是一個(gè)狀態(tài)的指針,在jbpm中,每個(gè)token能指向一個(gè)參與者,因此也就創(chuàng )建了在參與者和狀態(tài)之間的關(guān)聯(lián)。在這個(gè)token思想(state-actor)背后:當引擎開(kāi)始一個(gè)狀態(tài),那就意味著(zhù)工作流引擎正在等待某些額外的觸發(fā)機制。如果流程定義已經(jīng)被弄好了,那這時(shí)就會(huì )計算決定正在等待誰(shuí)來(lái)執行操作,當token進(jìn)入一個(gè)狀態(tài)時(shí)候,這個(gè)計算就會(huì )被執行,所以任務(wù)里列表將是tokens(涉及到一個(gè)指定的參與者)的集合,在jbpm中參與者總是會(huì )以actoridjava.lang.string)來(lái)進(jìn)行識別。

下面代碼顯示了獲取任務(wù)列表的coding

// get an execution service for user Carl Gauss (cg)

ExecutionService executionService = JbpmServiceFactory.getInstance().openExecutionService("cg");

// get the task list for Carl Gauss (cg)

Collection tasks = executionService.getTaskList("cg");

executionService.close();

 

 

 

5、                  結束狀態(tài)信號量

當流程實(shí)例被啟動(dòng)后,jbpm計算下一個(gè)狀態(tài)以及負責此任務(wù)的責任人(參與者),流程中的計算token運行的結果是安排下一個(gè)參與者執行任務(wù),接下來(lái)jbpm就會(huì )告訴系統所有的token都在等待這個(gè)得到任務(wù)的參與者,在例子中我們假定第一個(gè)任務(wù)就是我上面啟動(dòng)的的那個(gè)。(他們只是方面大家理解才舉的這個(gè)例子)。當這個(gè)參與者做了決定,他會(huì )通過(guò)調用一個(gè)方法名為endOfState來(lái)通知jbpm。

 

 

 

一個(gè)結束狀態(tài)信號量代碼:

ExecutionService executionService = 

    JbpmServiceFactory.getInstance().openExecutionService("CarlGauss");

Collection tasks = executionService.getTaskList("CarlGauss");

Token token = (Token) tasks.iterator().next();

executionService.endOfState( token.getId(), "approve" );

executionService.close();

 

 

 

 

 

 

6、                  包含一個(gè)action

Jbpm另外一個(gè)重要的方面就是在過(guò)程定義中包含actions,一個(gè)action是一斷java 代碼。這些代碼必須在某個(gè)過(guò)程事件之上被執行。假設當一個(gè)例子流程啟動(dòng)后你想發(fā)個(gè)消息“message in a bottle”,你將寫(xiě)代碼發(fā)送此消息作為一個(gè)actionhandler。

public class ExampleActionHandler implements ActionHandler {

  public void execute(ExecutionContext executionContext) {

    System.out.println( "message in a bottle" );

  }

}

example action handler code

然后我們能創(chuàng )建在一個(gè)離開(kāi)開(kāi)始狀態(tài)的transtion(變遷)之上的一個(gè)action。

...

<start-state name="start">

  <transition to="only state">

    <action><delegation class="org.jbpm.example.ExampleActionHandler" /></action>

  </transition>

</start-state>

...

作為最最基本的,有3種事件類(lèi)型(action可以被放置):進(jìn)行一個(gè)變遷,進(jìn)入一個(gè)節點(diǎn),離開(kāi)一個(gè)節點(diǎn)。

7、                  聲明一個(gè)變量

一個(gè)變量是一個(gè)在數據庫中的持久文本域,所以當想設置一個(gè)變量時(shí)候,jbpm不得不知道怎樣轉換對象成文本,對于下面的類(lèi)型,jbpm知道如何自動(dòng)轉換,它們是:

Java.lang.string

Java.lang.long

Java.lang.date

Java.lang.double

Java.io.serializable

這些變量類(lèi)型在processdefinition.xml中不必聲明。Jbpm利用一個(gè)hashmap的東西來(lái)創(chuàng )建這些變量。

如果你想存儲其他java類(lèi)型的變量,那么你就必須在processdefition.xml中定義一個(gè)serializer。如此:

...

  <type java-type="org.jbpm.impl.YourCustomJavaType">

         <delegation class="org.jbpm.impl.YourCustomSerializer" />

  </type>

...

jpdl-fragment that declares a custom serializer

     在這里org.jbpm.impl.YourCustomSerializer必須實(shí)現org.jbpm.delegation.serializer,然后,jbpm就知道如何識別你新定義的類(lèi)型變量,并把它轉換成文本域(DB中)

為了避免jbpm只能自動(dòng)識別serializer來(lái)使用,可以像下面這樣指定變量:

...

  <type java-type="org.jbpm.impl.YourCustomJavaType">

         <delegation class="org.jbpm.impl.YourCustomSerializer" />

         <variable name="your-custom-var-name">

         <variable name="your-second-custom-var-name">

  </type>

...

jpdl-fragment that declares a custom serializer

最后是聲明變遷變量,變遷變量能被actionhandler訪(fǎng)問(wèn),但是,他們將被存儲到數據庫中,下面是個(gè)例子:

...

  <type>

         <transient />

         <variable name="your-transient-var-name">

         <variable name="your-second-transient-var-name">

  </type>

...

jpdl-fragment that declares transient variables

 

 

 

8、                  以客戶(hù)端訪(fǎng)問(wèn)變量

 

 

 

9、                  以一個(gè)action訪(fǎng)問(wèn)變量

 

 

 

 

 

 

10、              安排任務(wù)


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java版工作流實(shí)現技術(shù)大比拼
Hello World 例子---jbpm(摘抄)
jbpm學(xué)習心得
第八章. 上下文
JBPM 2 (Hello World) - 閑人茶館 - JavaEye技術(shù)網(wǎng)站
Jbpm用戶(hù)指南翻譯:第11章 任務(wù)管理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久