2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

學(xué)習(xí)jbpm部署部分

 duduwolf 2005-08-06

所有圖片請到j(luò)bpm開源站點(diǎn)去查看。此部分對(duì)應(yīng)著jbpm站點(diǎn)的doc的部署那一部分。這部分的理解應(yīng)該沒有什么太大出入,歡迎各位收藏瀏覽我的文章。謝謝!

對(duì)于一些常用單詞或者行業(yè)內(nèi)已經(jīng)常用的單詞我并沒有做翻譯,例如schedule等,我想這樣能夠更方便大家的理解。job我譯成一次作業(yè)了。還有一些是我吃不準(zhǔn)的,請見諒!如果有什么疑問或者見地請與我聯(lián)系!我會(huì)盡快更正。

希望能與您共同進(jìn)步,歡迎交流: yun15291li@hotmail.com

序言:

在經(jīng)過了jbmp開始入門以及指南兩章后,對(duì)JBPM有個(gè)大概的了解。下面我們來看看JBPM部署方面的知識(shí)。

接下來介紹如何把JBPM部署到不同的環(huán)境中。

 

 

 

JBPM可以在許多不同的環(huán)境進(jìn)行部署,其中包括ant task(應(yīng)該算是個(gè)附屬腳本,不應(yīng)該算做部署環(huán)境吧),swing client,web app,ejbweb services中。

 

 

 

部署jbpmj2se環(huán)境:

這應(yīng)該算是jbpm可以部署的幾種方案中最簡單的,把jbpm應(yīng)用到一個(gè)簡單java main程序中,一個(gè)單元測試中,一個(gè)swing應(yīng)用中。

作為最最基礎(chǔ)的,jbpm能夠被應(yīng)用在簡單的java程序中。你只要把jbpm.core.jar添至系統(tǒng)classpath中并且配置好數(shù)據(jù)庫。在java程序中你就可以獲得jbpm服務(wù)org.jbpm.JbpmServiceLocator

下面給出幾種部署:

1、  webapp中:如果一個(gè)servlet容器:tomcat、resin等。

2、  在一個(gè)ant-taskjbpm包含一個(gè)ant-tasks,用來給process archive打包并且部署一個(gè)process archive。

3、  JUnite test中:jbpm的默認(rèn)配置是想開發(fā)測試process archives,應(yīng)用于一個(gè)瞬時(shí)、內(nèi)存數(shù)據(jù)庫中,那也就意味著你不用建立一個(gè)獨(dú)立數(shù)據(jù)庫和初始化它。Jbpm檢測到?jīng)]有jbpm表,那么就會(huì)自動(dòng)建好。這里應(yīng)用的是hibernate框架來實(shí)現(xiàn)對(duì)象持久層。

4、  在一個(gè)定制的app中:當(dāng)你的應(yīng)用需要整合一個(gè)工作流管理系統(tǒng),你可以僅僅使用jbpm作為你們應(yīng)用當(dāng)中的一個(gè)組件,甚至于您系統(tǒng)的用戶都沒注意到使用jbpm這一點(diǎn)。

部署jbpm到一個(gè)web app中:

1、  安裝jdbc驅(qū)動(dòng)(一般就是下載相應(yīng)的jar文件追加classpath或者copyWEB-INF/lib目錄下)

2、  jbpm.properties放到WEB-INF/classes

3、  這些jar文件放到WEB-INF/lib目錄下

a)       jbpm.core.jar

b)       hibernate-2.1.1.jar

c)        c3p0.jar

d)       dom4j.jar

e)        cglib2.jar

f)         ehcache.jar

g)       odmg.jar

h)       commons-collections.jar

i)         commons-logging.jar

j)         commons-beanutils.jar

k)       commons-lang.jar

4、  jbpm.warapp下(原文沒寫,我猜也是應(yīng)該如此的。)等我測試后在公布正確步驟,會(huì)在今后文章中完善。

部署jbpm到一個(gè)J2EE服務(wù)器中:

 

 

 

簡單的部署在J2EE container中,jbpm已經(jīng)寫了一個(gè)ejb-wrapper來包裹jbpm api,接下來的大致意思就是:利用ant可以幫助您把jbpm部署到jboss中。這一點(diǎn)我測試過了。其他請參看原文。

配置:

適當(dāng)?shù)呐渲?/SPAN>jbpm,請遵從下面4種配置機(jī)制:

1、 jbpm.properties放到classloader能夠找到的位置,因?yàn)樗虞d的時(shí)候使用getResourceAsStream方法。不懂的可以查看jdk。大致就是放到classpath可以找到的位置,如web app中的WEB-INF/classes中,在tomcat啟動(dòng)后就會(huì)自動(dòng)把此目錄下文件加載到classpath中。

2、  在調(diào)用getInstance方法之前加載配置文件(properties)。

3、  在調(diào)用getInstance方法之前調(diào)用配置文件(classloaderstring)。

4、  對(duì)于創(chuàng)建復(fù)雜不同的jbpm配置實(shí)例在相同的jvmclassloader),你可以用jbpm配置和servicelocator的構(gòu)造器并且不用做任何靜態(tài)初始化和配置。

配置參數(shù)如下:

屬性

描述

默認(rèn)值

hibernate.*

@see the hibernate docs

jbpm配置文件中直接完成hibernate的配置

默認(rèn)是一個(gè)內(nèi)存數(shù)據(jù)庫hsqldb。主要是為測試而用的

jbpm.create.tables

{ only-if-not-present | never }

方便應(yīng)用,jbpm在最開始啟動(dòng)時(shí)候會(huì)檢測是否存在表,如果沒有則會(huì)自動(dòng)創(chuàng)建。產(chǎn)生ddl語句開始drop表和約束然后創(chuàng)建表和約束

only-if-not-present

jbpm.create.tables.log

{ true | false }

Ddl語句創(chuàng)建表是否被log輸出.

false

jbpm.create.tables.query

{ a plain SQL query }

簡單的sql查詢語句,這個(gè)屬性會(huì)檢測表是否存在,并且這個(gè)屬性僅僅用在屬性“‘jbpm.create.tables‘”被設(shè)置成’only-if-not-present‘的情況。如果執(zhí)行sql查詢語句出現(xiàn)異常,那么jbpm會(huì)假定表不存在.

SELECT ID FROM JBPM_DEFINITION WHERE ID = 1

jbpm.apply.transactions

{ yes | no }

Jbpm如何處理transaction(事務(wù))‘yes‘意思是對(duì)于執(zhí)行每個(gè)更新方法把事務(wù)應(yīng)用到jdbc連接上。其中排除定義在*readservices中的更新方法。‘no‘意味著將不會(huì)應(yīng)用任何事務(wù)處理操作。’no’能夠應(yīng)用在一個(gè)容器或者用戶自己提供的jdbc連解決中。

yes

jbpm.file.mgr

{ database | filesystem | the class-name of a class that implements org. jbpm. persistence. FileMgr }

Jbpm如何存儲(chǔ)文件(例如在process archive中的類文件)。此配置被添加是因?yàn)橐恍?shù)據(jù)庫驅(qū)動(dòng)(例如oracle)不能很好的處理二進(jìn)制文件。

database

jbpm.file.mgr.directory

 

 

 

Jbpm存儲(chǔ)文件的根目錄的名字,設(shè)置成如:/usr/jbpm或者c:/data/jbpm

-no default specified-

jbpm.validate.xml

{ true | false }

如果這個(gè)屬性設(shè)置為false的話,Process archive分析將不會(huì)有效驗(yàn)證processdefinition.xml文件。

true

jbpm.id.generator

{ default | the class-name of a class that implements org. jbpm. persistence. IdGenerator }

產(chǎn)生ID方式。用于jbpm持久對(duì)象。

org. jbpm. persistence. hibernate. SequenceBlockIdGenerator

jbpm.id.generator.node.id

{ an integer between 0 and 65535 }

cluster中這個(gè)節(jié)點(diǎn)(node)的唯一ID

0

jbpm.id.generator.bocksize

{ an integer }

(不知道怎么翻譯好,下面是原文)大致意思是ID產(chǎn)生模式的區(qū)塊大小。

100

jbpm.id.generator.configuration

{ same | the resource of the id generator hibernate properties }

ID產(chǎn)生器需要一個(gè)在分離事務(wù)中的session。因此session工廠用于產(chǎn)生ID,ID可以不從數(shù)據(jù)源管理的container中獲得。所以如果你不使用datasource(數(shù)據(jù)源)在其中管理事務(wù)的話,你可以使用默認(rèn)值。‘same‘ 意思是和其他配置參數(shù)采用相同配置屬性來為ID產(chǎn)生器的session工廠。否則,采用hibernate配置來產(chǎn)生使用ID產(chǎn)生器session工廠。(上面這段話可能翻譯有誤,大致意思如此。)

same

jbpm.log.stdout

{on|off}

配置公用(普通)log輸出。當(dāng)設(shè)置為off,jbpm不再配置公用(普通)log。

on

jbpm.log.default

{ trace | debug | info | warn | error | fatal }

默認(rèn)的log級(jí)別。

error

jbpm.log.package.* (whererepresents any package name)

{ trace | debug | info | warn | error | fatal }

以給定的值覆寫jbpm默認(rèn)的log級(jí)別。

jbpm. log. package. org. jbpm= debug

jbpm.scheduler.wait.period

long

schduler polls中等待的毫秒數(shù)。

5000

jbpm.execute.actions

{ true | false }

如果設(shè)置為true,jbpm將執(zhí)行指定的action handler??梢栽O(shè)置為false,為了測試目的以免執(zhí)行業(yè)務(wù)流程。

true

 

 

 

JBPM數(shù)據(jù)庫:

概述:

Jbpm存儲(chǔ)所有信息在數(shù)據(jù)庫中:

1、  過程定義

2、  流程執(zhí)行的運(yùn)行時(shí)信息

3、  流程log

Schema generation

默認(rèn)狀態(tài)下,第一次訪問數(shù)據(jù)庫時(shí)候,jbpm將會(huì)檢測表是否存在。如果不存在那么jbpm數(shù)據(jù)庫表將會(huì)被自動(dòng)創(chuàng)建。這可以在上面配置信息中找到’jbpm.create.tables’

針對(duì)一個(gè)數(shù)據(jù)庫的schema能夠在一個(gè)文件中創(chuàng)建,按照下面的步驟:

1、  更新文件:${jbpm.home}/core/schema.generation.properties來反射你選擇的數(shù)據(jù)庫。默認(rèn)的數(shù)據(jù)庫是Hypersonic DB。在這個(gè)文件里有樣本生成??梢苑抡丈勺约盒枰奈募?。

2、 在文件夾${jbpm.home}/coreant generate.dll產(chǎn)生schema。產(chǎn)生的文件在${jbpm.home}/target/sql/create-jbpm-database.sql

更換數(shù)據(jù)庫:

1、  更新文件core/schema.generation.properties

2、  把對(duì)應(yīng)的jdbc驅(qū)動(dòng)放到lib目錄(classpath能夠找得到)

3、  dos(命令提示符)下cd到打開core目錄

4、  執(zhí)行ant generate.dll

5、  現(xiàn)在,你已經(jīng)產(chǎn)生dll腳本在${jbpm.home}/target/sql/create-jbpm-database.sql

6、  當(dāng)運(yùn)行jbpm時(shí)候,確信你提供了正確的hibernate配置。在上面的配置中已經(jīng)介紹。

一些其他注意事項(xiàng):

1、  有一些數(shù)據(jù)庫想firebirdoracle需要添加如下屬性配置到jbpm.properties

Hibernate.query.substitutions=true 1,false 0

2、校驗(yàn)數(shù)據(jù)庫中的text類型的長度,默認(rèn)一個(gè)string類型是255長度。你可以以兩種方式調(diào)整:通過增加長度參數(shù),在hibernate mapping 文件中像這樣:<property name="configuration" type="string" length="10000"/>, 或者通過手動(dòng)更新剛才用ant產(chǎn)生的dll腳本。

APPSERVER 兼容性:

 

 

 

Scheduler

Jbpm有一個(gè)scheduler。ActionHandler實(shí)現(xiàn)器(和其他代理實(shí)現(xiàn)類)可以通過schedulerservicesschedule工作。SchedulerService可以在ExecutionContext中的getSchedulerService方法來進(jìn)行訪問。

Jbpmscheduler包括4部分:

1、  scheduler service:允許schedule和取消一次作業(yè)。實(shí)際上scheduler service僅僅插入schedule和移除jbpm數(shù)據(jù)庫中的一次作業(yè)記錄。在某一個(gè)過程執(zhí)行事件actions能被執(zhí)行,在actions里面,你可以schedule和取消一次作業(yè)。

2、  scheduler server:它是一個(gè)能夠檢查一次作業(yè)取消還是執(zhí)行的組件。Scheduler server應(yīng)該比較有規(guī)律(例如每隔5m)就被調(diào)用一次。為完成此功能,jbpm提供34功能。

3、  scheduler servlet:響應(yīng)requestservlet。通知2來檢查工作。

4、  scheduler client:一個(gè)非常簡單的java程序,用來一個(gè)request3。時(shí)間間隔一般比較?。◣酌耄?。

一個(gè)關(guān)于如何在過程定義中使用scheduler的例子,請參看scheduler test

1、  core/src/java/org/jbpm/delegation/action/ScheduleJobActionHandler.java是一個(gè)可配置的用來schedule一次作業(yè)的acition

2、  core/src/java/org/jbpm/delegation/action/CancelJobActionHandler.java是一個(gè)可配置的用來取消一個(gè)或者多個(gè)作業(yè)的action。

3、  core/src/test/resources/process/schedulingprocess.xml查看上面兩個(gè)文件如何使用

 

 

 

jboss cluster中的jbpm

 

 

 

這里講的是如何在jboss cluster部署jbpm 企業(yè)bean。前提:你需要有兩個(gè)或者更多的計(jì)算機(jī),并且預(yù)先裝好jvmant。可選地,你能夠在一個(gè)計(jì)算機(jī)上運(yùn)行多個(gè)jboss實(shí)例,但是這種情況,這里并沒有介紹。

 

 

 

安裝:

+----------------+  

 | Node 1         |

 | +------------+ |

 | | Hypersonic |.|...................................... . . .

 | | Database   | |            :                    :

 | | for jBpm   | |  +---------:------+   +---------:------+

 | +------------+ |  | Node 2  :      |   | Node 3  :      |

 |       :        |  |         :      |   |         :      |

 | +------------+ |  | +------------+ |   | +------------+ |

 | | jBpm ejb   | |  | | jBpm ejb   | |   | | jBpm ejb   | | 

 | | module     | |  | | module     | |   | | module     | |

 | +------------+ |  | +------------+ |   | +------------+ |

 |       !        |  |         !      |   |         !      |

 +-------!--------+  +---------!------+   +---------!------+

         !                     !                    !      

         !                     !                    !      

       !!!!!!! remote application clients !!!!!!!!!!!!!!

在每個(gè)node上做如下操作:

  1. 安裝jboss3.2.3或者更高版本

  2. 更新 jbpm.home目錄里的build.properties

  3. ${jbpm.home}里運(yùn)行ant build

  4. ${jbpm.home}里運(yùn)行‘a(chǎn)nt configure.jboss.3.2.3+‘ 

  5. 在文件 ${jboss.home}/server/jbpm/deploy/jbpm-ds.xml 更改 下面一行。

 <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>

請使用node1ip,不要使用localhost(即使是在node1上也是不要使用localhost)。切記!

node1上執(zhí)行下面操作:

  1. 運(yùn)行‘{jboss.home}/bin/run.bat -c jbpm‘

  2. 在目錄 ${jbpm.home}/ejb ‘a(chǎn)nt deploy‘ 將會(huì)創(chuàng)建 ${jbpm.home}/ejb/target/j2ee/jbpm.ejb.jar然后copy 它到 ${jboss.home}/server/jbpm/farm (這將稍后是部署ejb模塊到所有node)

  3. 在目錄${jbpm.home}/ejb中運(yùn)行 ‘a(chǎn)nt deploy.process.archives‘ 上載process archives到數(shù)據(jù)庫中。

node2和其他沒有數(shù)據(jù)庫的節(jié)點(diǎn)(如3),做如下操作:

On nodes 2 and higher (=the ones without a database), also do the following :

  1. 刪除文件 ${jboss.home}/server/jbpm/deploy/jbpm-db-service.xml

  2. 從文件 ${jboss.home}/server/jbpm/deploy/jbpm-ds.xml 中移除下面這一行:‘<depends>jboss:service=JbpmDatabase</depends>‘

開啟所有node的服務(wù): ‘{jboss.home}/bin/run.bat -c jbpm‘

這時(shí),所有node 的準(zhǔn)備工作就做好了。

  1. 在目錄${jbpm.home}/ejb 下運(yùn)行 ‘a(chǎn)nt test‘

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多