Java 人生

          java (Java EE)&Linux

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            15 Posts :: 2 Stories :: 5 Comments :: 0 Trackbacks

          2006年7月23日 #

           

          BPEL的概念

                BPEL(Business Process Execution Language)又叫BPEL4WS(Business Process Execution Language For Web Service),面向Web服務(wù)的業(yè)務(wù)流程執(zhí)行語言。是一種使用Web服務(wù)定義和執(zhí)行業(yè)務(wù)流程的語言。BPEL提供了一種相對簡單易懂的方法,可將多個WEB服務(wù)組合到一個新的復(fù)合服務(wù)(稱作業(yè)務(wù)流程)中。

                BPEL本身是一個Web服務(wù),可以作為服務(wù)的提供者。

                BPEL是基於Web服務(wù)的,沒有Web服務(wù)就沒有BPEL


            

           BPEL
          的運(yùn)作方式


           BPEL的一般構(gòu)成

                一個以bpel為後綴的文件(例如MyFlow.bpel)

                一個WSDL文件

                一個部置XML文件,樣子形似bpel.xml

           BPEL的實現(xiàn)需求

                需要熟悉單個的Web Service的使用方法

                需要了解具體的業(yè)務(wù)流程

                需要一個運(yùn)行BPEL的處理器

                需要一個流程設(shè)計器

                當(dāng)然需要對BPEL語法標(biāo)簽的掌握等

          8.6 BPEL的結(jié)構(gòu)

          BPEL的一般結(jié)構(gòu)

                      <process>

                        <partnerLinks>

                          <partnerLink>

                          </partnerLink>

                        </partnerLinks>

                        <variables>

                          <variable/>

                        </variables>

                        <faultHandlers>   

                        </faultHandlers>

                        <sequence>

                            Activities

                        </sequence>

                      </process>

          <process>的屬性

          <process name="ncname" targetNamespace="uri"

                   queryLanguage="anyURI"?

                   expressionLanguage="anyURI"?

                   suppressJoinFailure="yes|no"?

                   enableInstanceCompensation="yes|no"?

                   abstractProcess="yes|no"?         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

          .

          .

          </process>

          <partnerLinks>樣式

          <partnerLinks>

              <!– 注意:至少要指定一個角色. -->

              <partnerLink name="ncname"

                                   partnerLinkType="qname"

                                   myRole="ncname“

                                   partnerRole="ncname">

              </partnerLink>

           </partnerLinks>

          <variables>樣式

          <variables>

              <variable name="ncname"  

                              messageType="qname/>

           </variables>

          <faultHandlers>樣式

          <faultHandlers>

           <catch faultName="qname“

                       faultVariable="ncname">

                activity

              </catch>

              <catchAll>

                activity

              </catchAll>

           </faultHandlers>

          Activities包含具體如下

                      <receive>

                      <reply>

                      <invoke>

                      <assign>

                      <throw>

                      <terminate>

                      <wait>

                      <empty>

                      <sequence>

                      <switch>

                      <while>

                      <pick>

                      <flow>

                      <scope>

                      <compensate>

          基本活動一

                      <invoke>

          – 調(diào)用某個 Web 服務(wù)上的操作

                      <receive>

          – 等待一條消息來回應(yīng)由某人從外部進(jìn)行調(diào)用的服務(wù)介面的操作

                      <reply>

          – 生成輸入/輸出操作的回應(yīng)

                      <wait>

          – 等待一段時間

          基本活動二

                      <assign>

          – 把資料從一個地方複製到另一個地方

                      <throw>

          – 指明某個地方出錯了

                      <terminate>

          – 終止整個服務(wù)實例

                      <empty>

          – 什麼也不做

          結(jié)構(gòu)化活動

                      <sequence>

          – 定義一組步驟的有序序列

                      <switch>

          – 使用現(xiàn)在常見的“case-statement”辦法來産生分支

                      <while>

          – 定義一個迴圈

                      <pick>

          – 執(zhí)行幾條可選路徑中的一條

                      <flow>

          – 以及指明一組步驟應(yīng)該並行地執(zhí)行

          一個完整的簡單示例

          <process name="test" targetNamespace="http://acm.org/samples"

                         suppressJoinFailure="yes"

                         xmlns:tns="http://acm.org/samples"

                         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"

                         xmlns:bpelx="http://schemas.oracle.com/bpel/extension"

                         xmlns:ora="http://schemas.oracle.com/xpath/extension"

                         xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

             <partnerLinks>

             <!-- The 'client' role represents the requester of this service. -->

                <partnerLink name="client" partnerLinkType="tns:test" myRole="testProvider"/>

             </partnerLinks>

             <variables>

                <variable name="input" messageType="tns:testRequestMessage"/>

                <variable name="output" messageType="tns:testResponseMessage"/>

             </variables>

             <sequence name="main">

                <receive name="receiveInput" partnerLink="client" portType="tns:test" operation="process" variable="input" createInstance="yes"/>

                <assign name="creatReturnStr">

                   <copy>

                      <from expression="concat(&quot;Hello&quot;, bpws:getVariableData('input','payload','/tns:testRequest/tns:input'))"></from>

                      <to variable="output" part="payload" query="/tns:testResponse/tns:result"/>

                   </copy>

                </assign>

                <reply name="replyOutput" partnerLink="client" portType="tns:test" operation="process" variable="output"/>

             </sequence>

          </process>

          posted @ 2007-09-14 08:51 jinmy liao 閱讀(519) | 評論 (0)編輯 收藏

          配置說明

          程序名稱

          JBoss ESB

          數(shù)據(jù)庫路徑和名稱

          222.118.20.108\jbossesb

          程序的文件構(gòu)成說明

          1)?????? Jboss4.0.4GA (contain Ejb3.0)

          2)?????? jbossesb-4.0Beta1MP1????

          2.1 jbossesb-appl.ear

          2.2 jbossEsb.properties

          2.3 JBossESB-ds.xml

          2.4 properties-service.xml

          2.5 ObjStore.xml

          配置步驟如下 :

          1. jbossesb-appl.ear 復(fù)制到 <JBoss-home>/server/default/deploy
          2. properties-service.xml 復(fù)制到 <Jboss-home>/server/default/deploy
          3. 復(fù)制 Jbossesb.properties <Jboss-home>/server/default/conf
          4. 編輯 JBossESB-ds.xml
          5. 復(fù)制 JbossESB-ds.xml <JBoss-home>/server/default/deploy

          ?

          運(yùn)行條件和配置說明

          運(yùn)行平臺和條件

          Windows

          Linux

          數(shù)據(jù)源配置

          1)數(shù)據(jù)源配置在JBossESB-ds.xml文件配置,詳細(xì)信息如下:

          <datasources>

          ? <local-tx-datasource>

          ??? <jndi-name>JBossESBDS</jndi-name>

          ?

          ??? <connection-url>jdbc:jtds:sqlserver://222.118.20.108;DatabaseName=jbossesb</connection-url>

          ??? <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>

          ??? <user-name>dbname</user-name>

          ??? <password>access</password>

          ?

          ??? <min-pool-size>10</min-pool-size>

          ??? <max-pool-size>100</max-pool-size>

          ??? <blocking-timeout-millis>1000</blocking-timeout-millis>

          ??? <idle-timeout-minutes>5</idle-timeout-minutes>

          ?

          ? </local-tx-datasource>

          ?

          </datasources>

          2.修改jbossEsb.properties文件:

          org.jboss.soa.esb.mail.smtp.host=www.163.com

          org.jboss.soa.esb.mail.smtp.port=23

          org.jboss.soa.esb.mail.smtp.user=ejinmy

          org.jboss.soa.esb.mail.smtp.password=123456789abc

          ?

          ?

          #

          # Object Store Settings

          #

          org.jboss.soa.esb.objStore.configfile=file:/e:/temp/ObjStore.xml

          程序運(yùn)行配置

          必需是 JBoss .4.0.4 版本,還要支持 EJB3.0

          運(yùn)行 JBoss App Server 就啟動了 JBoss ESB.

          其它說明

          數(shù)據(jù)庫表(script)

          CREATE TABLE batches (

          ??? batch_num int NOT NULL,

          ??? seq integer NOT NULL,

          ??? data varchar,

          ??? CONSTRAINT batches_pk PRIMARY KEY (batch_num,seq)

          );

          ?

          ?

          CREATE TABLE object_snap (

          ??? uid int NOT NULL,

          ??? stamp int,

          ??? snap_type varchar,

          ??? object_uid int,

          ??? batch_num int,

          ??? xml_data varchar,

          ??? CONSTRAINT object_snap_pk PRIMARY KEY (uid)

          );

          ?

          ?

          CREATE TABLE people_index (

          ? ??uid bigint NOT NULL,

          ??? stamp int,

          ??? latest_snap_uid int,

          ??? latest_snap_date varchar,

          ??? name varchar,

          ??? phone varchar,

          ??? address varchar,

          ??? CONSTRAINT people_index_pk PRIMARY KEY (uid)

          );

          ?

          ?

          CREATE TABLE uid_table (

          ??? uid integer NOT NULL,

          ??? sequence_name varchar NOT NULL,

          ??? last_used_uid bigint NOT NULL,

          ??? CONSTRAINT uid_table_pk PRIMARY KEY (uid)

          );

          ?

          ?

          INSERT INTO uid_table (uid, sequence_name, last_used_uid) VALUES (1, 'jbossEsb_objuid', 10500000);

          INSERT INTO uid_table (uid, sequence_name, last_used_uid) VALUES (2, 'jbossEsb_batchuid', 251000);

          ???

          此文檔是配置安裝JBOSS ESB的步驟說明書.

          ?

          填寫日期: 2006/10/18      填寫人: ?? ??jinmy ????
          ? 更新日期:

          ?

          ?

          有使用JBoss ESB的可以一起探討,QQ:182529178
          posted @ 2006-10-21 14:20 jinmy liao 閱讀(2343) | 評論 (1)編輯 收藏

          cimero
          posted @ 2006-09-26 11:26 jinmy liao 閱讀(791) | 評論 (0)編輯 收藏

          ? 好久都沒有來這裡看一下了,由於這兩個月要忙一個流程,公司在英國開一個銷售公司,要準(zhǔn)備程序給他們用,本來現(xiàn)在的流程運(yùn)作基本上可以,但是現(xiàn)在的程序能拿到英國用?
          ? 由於是一個銷售的公司,有了銷售、采購、倉庫就差不多了。這些程序我們都有,但是為了那邊的程序、流程能順暢的運(yùn)行,任務(wù)還有好多,到8月15任務(wù)就要完成,也差不多了,呵,看了下現(xiàn)在的情況,還基本上可以,不過還有程序沒有組合起來。
          ? 從這兩個月的任務(wù)中,我感覺到程序的開發(fā)要做到重用、擴(kuò)展,並不是很容易的事。
          首先從數(shù)據(jù)層來說,不同的地方有可能使用不同的數(shù)據(jù)表,在java中開發(fā)到是比較容易處理,但是如果是用C/S的delphi開發(fā)的大部分都是直接使用sql的,很難實現(xiàn)這一點
          也許你會說,為什麼不使用同一個數(shù)據(jù)表?情況很多,我們公司是這樣的,賣了一套ERP(不完整版本),自己開發(fā)了其余部分,這兩個程序
          要同時運(yùn)行,只有我們新開發(fā)的程序要使用不同表的情況。同樣我們的合作公司,有可能有他自己的系統(tǒng),如果能做到不依賴於基表
          就更容易重用,數(shù)據(jù)共享.
          接下來就是:業(yè)務(wù)功能的重用.
          像倉庫的進(jìn)貨、出貨,可用於PO,SO,生產(chǎn)等,都是一樣的意義。為了能使不同地方的業(yè)務(wù)功能能重用,我們使用SOA的思想
          利用WebServices、ESB的技術(shù)來實現(xiàn),業(yè)務(wù)的服務(wù)化.
          再就是:擴(kuò)展
          不同的地方有可能需求有不同,這是很合乎情理的,如現(xiàn)在英國要看到我們貨物在途量,本來倉庫沒有這個功能的.
          我想要做到軟件的可維護(hù)、可重用不是簡單的知道使用語言,這個直接輿個人的習(xí)慣有很大的關(guān)係
          其他開發(fā)軟件,就是開發(fā)人員處理這個,等於生活的中的煮飯一樣,有的人很輕松就完成,有的人就弄的一團(tuán)糟
          多鍛煉積累經(jīng)驗也是重要,最後提醒自己,做任何事情都不能馬虎,要仔細(xì)考慮。同時希望8.15能完成任務(wù)

          ?

          posted @ 2006-08-01 20:11 jinmy liao 閱讀(430) | 評論 (0)編輯 收藏

          感覺沒有插件開發(fā)工程真的好辛苦,總想去找個插件,但是一直沒有發(fā)現(xiàn),有哪位朋友使用ESB的,能介紹個開發(fā)工具?
          posted @ 2006-07-23 09:54 jinmy liao 閱讀(1575) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 广饶县| 延津县| 南召县| 五指山市| 陕西省| 高淳县| 九寨沟县| 大邑县| 海伦市| 普宁市| 泸定县| 沐川县| 德庆县| 旺苍县| 延川县| 鄂温| 拉孜县| 大同市| 手机| 乐都县| 文山县| 安陆市| 宁化县| 阜平县| 九龙坡区| 汨罗市| 忻州市| 同德县| 慈溪市| 大田县| 察雅县| 瓦房店市| 南雄市| 玉田县| 罗源县| 甘孜县| 丰原市| 阜新| 镇宁| 贵德县| 怀柔区|