posts - 30,  comments - 85,  trackbacks - 0

          使用WID開發(fā)BPEL業(yè)務(wù)流程模版后,通常部署到WPS上面以后我們需要能夠trgger流程啟動和流程運轉(zhuǎn)。否則流程就沒有意義了。

               請參考:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0512_fanggw/#N100F6

          這里介紹客戶端調(diào)用流程的幾種方式。通常有三種方式:
                            1、基于服務(wù)組件架構(gòu)(SCA)的調(diào)用方式

                            2、基于Web服務(wù)的調(diào)用方式 (WebService調(diào)用)
                            3、通過BPC的應(yīng)用程序接口
          用到最多的還是第三種通過BPC應(yīng)用程序接口調(diào)用的方式。下面介紹一下通過BPC應(yīng)用程序調(diào)用BPEL的方式:
                當(dāng)我們設(shè)計好業(yè)務(wù)流程。并且部署到WPS下后:
                 我們首先要通過JNDI找到LocalBusinessFlowManagerHome,然后生成相應(yīng)的LocalBusinessFlowManager。這部分的代碼片斷如下:
                  InitialContext ctx = new InitialContext();
                  LocalBusinessFlowManagerHome mgrHome =
                  (LocalBusinessFlowManagerHome)ctx.lookup("java:comp/env/ejb/LocalBusinessFlowManagerHome");
                  LocalBusinessFlowManager mgr = mgrHome.create();

                

          調(diào)用流程的代碼是通過LocalBusinessFlowManager的call方法。方法的簡單說明如下:

          public ClientObjectWrapper call(java.lang.String processTemplateName,
          ClientObjectWrapper inputMessage);

          因此,我們需要構(gòu)建一個代表輸入?yún)?shù)的ClientOjbectWrapper。生成一個代表輸入?yún)?shù)的ClientObjectWrapper有多種方式,這里采用先構(gòu)建一個DataObject,然后調(diào)用ClientObjectWrapper構(gòu)造方法的方式。具體代碼實現(xiàn)如下:



          ServiceManager serviceMgr = new ServiceManager();
                      BOFactory bofactory = (BOFactory)serviceMgr.locateService("com/ibm/websphere/bo/BOFactory");
                      DataObject input = bofactory.createByElement("http://HelloWorld/HelloWorldInterface", "hello");
                      input.setString("helloInput", msg);
                      ClientObjectWrapper inputWrapper = new ClientObjectWrapper(input);
                      

          BOFactory的createByElement根據(jù)流程的WSDL接口生成一個代表參數(shù)的一個DataObject。在生成代表輸入的ClientObjectWrapper之后,調(diào)用流程就變得相對比較簡單,具體代碼片斷如下:



          ClientObjectWrapper outputWrapper = mgr.call("HelloWorldProcess", inputWrapper);
                      DataObject output = (DataObject) outputWrapper.getObject();
                      resp = output.getString("helloOutput");
                      

          posted on 2007-06-25 16:12 安文豪 閱讀(1415) 評論(1)  編輯  收藏

          FeedBack:
          # re: 客戶端調(diào)用BPEL流程的幾種方法(轉(zhuǎn))
          2007-09-07 22:19 | 向大俠求救!!!
          大俠,我在學(xué)IBM SOA相關(guān)產(chǎn)品,可惜苦于沒有資料,請聯(lián)系我:nbdragon@263.net, 有酬謝!!!  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(6)

          隨筆檔案(28)

          文章分類(3)

          文章檔案(4)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 86709
          • 排名 - 670

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宁波市| 正阳县| 宁河县| 邢台县| 格尔木市| 安义县| 玛沁县| 阿拉善右旗| 延吉市| 柞水县| 观塘区| 新乐市| 吕梁市| 淮安市| 黄石市| 郎溪县| 北票市| 盱眙县| 苗栗县| 南城县| 都昌县| 乌拉特中旗| 焉耆| 定结县| 丰顺县| 婺源县| 蒲城县| 资兴市| 阳城县| 徐闻县| 太仆寺旗| 巴林右旗| 义马市| 普安县| 台州市| 北流市| 万全县| 阿巴嘎旗| 铜山县| 赣榆县| 盘锦市|