posts - 30,  comments - 85,  trackbacks - 0

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

               請(qǐng)參考: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)我們?cè)O(shè)計(jì)好業(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)建一個(gè)代表輸入?yún)?shù)的ClientOjbectWrapper。生成一個(gè)代表輸入?yún)?shù)的ClientObjectWrapper有多種方式,這里采用先構(gòu)建一個(gè)DataObject,然后調(diào)用ClientObjectWrapper構(gòu)造方法的方式。具體代碼實(shí)現(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接口生成一個(gè)代表參數(shù)的一個(gè)DataObject。在生成代表輸入的ClientObjectWrapper之后,調(diào)用流程就變得相對(duì)比較簡單,具體代碼片斷如下:



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

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

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

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


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

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

          常用鏈接

          留言簿(6)

          隨筆檔案(28)

          文章分類(3)

          文章檔案(4)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 86710
          • 排名 - 670

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 抚顺市| 出国| 林西县| 霞浦县| 丹巴县| 湘潭市| 屯留县| 新津县| 苏州市| 潮州市| 叶城县| 无为县| 神农架林区| 柳林县| 松江区| 青田县| 开化县| 晋中市| 太保市| 会理县| 营山县| 遵义市| 兰坪| 广南县| 昆明市| 桃源县| 修水县| 葫芦岛市| 宜丰县| 巴林右旗| 财经| 道孚县| 博罗县| 达拉特旗| 滕州市| 桂平市| 桃园市| 花莲县| 南皮县| 苍南县| 永春县|