<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kapok

    垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
    http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0502_gadepalli/0502_gadepalli.html
    內容:
    引言
    理解流程的類型
    介紹本文的場景
    來自 portlet 的通信機制
    準備部署流程 portlet
    開發 portlet
    測試 portlet
    配置流程模板
    查看 BPE API Javadoc
    結束語
    參考資料
    下載
    作者簡介
    對本文的評價
    訂閱:
    developerWorks 時事通訊


    級別: 初級

    Varadarajan Ramamoorthy, IT 顧問專家, IBM Raleigh 實驗室
    Vishy Gadepalli, 高級軟件工程師, IBM Raleigh 實驗室

    2005 年 3 月

    本文顯示了如何創建 portlet 向業務流程提供輸入和接收業務流程的輸出。用戶可以使用 Process Choreographer 提供的業務流程 Java API 來調用業務流程。本文同時包含了可供下載的樣本代碼。

    引言
    IBM? WebSphere? Portal V5.1 將業務流程功能集成到門戶部署中了。這種支持技術利用 WebSphere Portal (WP) 流程管理接口向很多企業提供了新的用于使用 WebSphere Business Integration Server Foundation (WBISF) Process Choreography 組件的選項。

    例如,Process Choreographer 提供了缺省的 Web 客戶端,用戶可以使用它與為創建中斷性或者非中斷性的業務流程的任務進行交互。用戶可以列出流程模板,輸入數據,實例化流程,并與創建為 Staff 和 Receive 活動的用戶工作條目一起工作。盡管這種客戶端接口有利于在業務活動的部署期間進行測試,但是它并不是用戶想要提供給其最終用戶的接口類型。

    需要為您的用戶以 Web 應用程序的方式或者在 WebSphere Portal 中運行 portlet 的方式開發自己的定制用戶接口。用戶最有可能使用 Process Choreographer 提供的開放 Java? API(本文中涉及到的 API 均稱為 BPE API)與流程引擎進行交互。

    本文描述了如何如何使用 Business Process Engine (BPE) API 來創建 portlet 以調用業務流程。為了領會本文的大部分內容,用戶需要了解 Process Choreographer、Web 服務、業務流程引擎和 WebSphere Portal。

    理解流程的類型
    在深入了解實際編寫 portlet 的詳細資料之前,我們首先看一看流程的兩種基本類型:

    • 可中斷性流程是長時間運行并且由事務服務組成的流程類型。用于批準 loan 應用程序的流程就是這樣的一個實例。
    • 非中斷性流程是短期存活的操作行為,組合起來形成單獨的事務操作,信用卡的確認就是一例。

    可中斷性流程
    如果流程的每個步驟都運行在自己的物理事物中,那么該業務流程就是可中斷性流程。可中斷性流程通常都是長期運行的流程。如果業務流程需要等待外部激勵或者包括了用戶之間的交互,那么該業務流程就必需是可間斷的。外部激勵的例子有:

    • 在企業對企業的交互中由另一個業務流程發送的事件
    • 對異步調用行為的響應
    • 完成員工活動

    可中斷性流程有以下特征:

    • 作為一些事務運行
    • 由同步服務和異步服務組成
    • 通過初始方法或者 sendMessage 方法啟動,因為不能同步檢索輸出消息
    • 正常情況下會運行很長的時間
    • 能持久地保存運行時值

    非中斷性流程
    非中斷性業務流程以單線程的方式運行,從啟動到結束期間是不可中斷的。非中斷性流程也稱為 microflows。這些流程有不同的事務能力。它們能夠作為活動會話的一部分運行在分布式事務中,或者和本地事務一起運行。

    非中斷性流程具有以下特征:

    • 作為單一事務運行。
    • 只由同步服務和非中斷性子流程組成。這就意味著非中斷性流程不能包括:
      • 全體活動或者等待活動
      • 異步調用
      • 多個接受活動
      • 可中斷性子流程
    • 使用調用方法的方式啟動,以便在流程結束后返回輸出消息。
    • 通常運行時間較短。
    • 在數據庫中不保存運行時值。
    • 不包括中斷性流程。

    介紹本文的場景
    本文的場景是創建了能夠通過調用流程來返回存儲的參數值的簡易 portlet 。為證券報價定義的流程是一個簡單的非中斷性流程。用戶可以查看使用 portlet 調用該流程的步驟。

    樣本代碼
    下載中提供了支持該場景的代碼。

    軟件需求
    要實現該場景,用戶至少擁有一種以下所示的環境:

    • IBM WebSphere Business Integration Server Foundation 5.1.x 下的 IBM WebSphere Portal V5.0.2.2 (以下簡稱 Server Foundation)
    • Server Foundation 下的 IBM WebSphere Portal V5.1

    用戶還需要使用配置了 WebSphere Portal Toolkit 的 IBM WebSphere Studio Application Developer Integration Edition 5.1.x (以下簡稱 Application Developer)。

    來自 portlet 的通信機制
    在 portlet 和流程之間存在多個通信選擇項。

    使用 BPE API
    BPE API 為開發用于基于 Business Process Execution Language (BPEL) 的流程的應用程序提供了以下表現:

    • Enterprise JavaBean (EJB) 表現,它能實現 API 的本地或者遠程調用。用于每種調用類型(LocalBusinessProcess 接口和 BusinessProcess 接口)的無狀態會話 bean 顯示了應用程序能調用的函數。BusinessProcessService 接口為這些會話 bean 提供了一種公用接口。
    • Java Message Service (JMS) 表現,它使得使用 JMS 能夠遠程調用 API 函數的子集。

    使用 Web 服務客戶端
    或者,可以將該流程顯示為 Web 服務。那么就可以生成用于 Web 服務的 Java 代理,并使用代理實例化流程。

    本文將討論使用 BPE API 和 EJB 調用流程。

    準備部署流程 portlet
    為部署流程 portlet,需要在 Application Developer 中創建一個項目,并使所需要的庫文件可用。

    創建 portlet 項目
    首先,創建一個 portlet 項目:

    1. 在 Application Developer 中選擇 File => New => Portlet Application Project

      提示: 如果用戶在 New 下面看不到 Portlet Application Project,單擊 Other,然后選擇 Portlet Development => Portlet Application Project

    2. 將項目命名為 ProcessStarter,然后選擇 Basic Portlet,如圖 1 所示。

      圖 1. 創建 portlet 項目
      圖 1. 創建 portlet 項目

    3. 單擊 Next
    4. 單擊并且確定以下初始化屏幕上的缺省設置,直到用戶看到 Event Handling 屏幕。
    5. 取消 Add Action Listener,然后單擊 Finish

      圖 2. 完成 portlet 項目的創建
      圖 2. 完成 portlet 項目的創建

      可以看到 Application Developer 中創建的新框架 portlet 項目。

    訪問所需的庫文件
    既然已經創建了portlet 項目,還需要使用于調用事務流程 API 的庫文件 JAR 可用于 Application Developer。可以通過將以下的 jar 文件從運行流程引擎的 Server Foundation 中復制到該 portlet 的 WEB-INF\lib 文件夾中來完成該操作,如下圖 3 所示,其中 <WAS_51_ROOT> 是安裝 Server Foundation 的位置。

    • <WAS_51_ROOT>\ProcessChoreographer\client\bpe137650.jar
    • <WAS_51_ROOT>\ProcessChoreographer\client\bpeapi.jar
    • <WAS_51_ROOT>\ProcessChoreographer\client\processportal.jar
    • <WAS_51_ROOT>\lib\wsif.jar

    復制這些庫文件:

    1. 打開 Window 瀏覽器,然后選擇這些 jar 文件。
    2. 單擊右鍵,然后選擇 Copy(或者按動 CTRL-C)。
    3. 在 Application Developer 中,展開然后選擇 Portlet Project 文件夾的 WEB-INF\lib
    4. 單擊右鍵,然后選擇 Paste

    圖 3. 將庫文件復制到 Application Developer 中
    圖 3 dropdown.  將庫文件復制到 Application Developer 中

    還需要向 portlet 項目的創建路徑中添加下列 JAR 文件。

    • WAS_50_PLUGINDIR/lib/qname.jar
    • WAS_50_PLUGINDIR/lib/wsdl4j.jar

    在 Application Developer 中添加 JAR 文件:

    1. 選擇瀏覽器視圖中的 portlet 項目。
    2. 單擊右鍵,然后選擇 Properties
    3. 選擇 Java Build Path
    4. 在庫文件的選項卡上,單擊 Add Variable
    5. 添加 wsdl4j.jar 和 qname.jar。
    6. 單擊 OK,然后退出屬性窗口。

    現在已經完成了 portlet 項目的設置程序,這樣會便于用戶開發流程 portal portlet 。

    開發 portlet
    解壓 下載 文件,并且將其內容解壓到用戶所選的目錄中。

    將從 zip 文件中解壓出的 ProcessStarterPortlet.java 文件中的內容進行復制,并且將其粘貼到 Application Developer 編輯器的 ProccessStarterPortlet 中。

    檢查提供的代碼
    接下來查看代碼的主要部分以理解 portlet 是如何使用 BPE API 的。

    獲取業務流程引擎 EJB

    portlet 能使用運行在流程服務器上的無狀態會話 bean 與流程引擎進行通信。為訪問此 EJB,代碼在流程機器上執行 JNDI 查詢以查找 com/ibm/bpe/api/BusinessProcessHome 來獲得 home object 并利用它創建業務流程 EJB 對象。該代碼就在 portlet 的 init() 方法中。清單 1 中的代碼片斷顯示了如何訪問 EJB 。

    清單 1. 訪問 EJB
    
    java.util.Hashtable env = new java.util.Hashtable();
    String corbaloc = "corbaloc:iiop:localhost:2809";
    
    env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
    "com.ibm.websphere.naming.WsnInitialContextFactory");
    env.put(javax.naming.Context.PROVIDER_URL, corbaloc);
    
    javax.naming.Context choreographyContext = 
    		new javax.naming.InitialContext (env);			
    
    Object o = choreographyContext.lookup 
    		("com/ibm/bpe/api/BusinessProcessHome");
               
    com.ibm.bpe.api.BusinessProcessHome bph = 
    		(com.ibm.bpe.api.BusinessProcessHome) 
    javax.rmi.PortableRemoteObject.narrow 
    		(o, com.ibm.bpe.api.BusinessProcessHome.class);
    businessProcess = bph.create ();
    

    調用流程 API

    我們現在來看一下幾個關鍵的 API 。

    流程模板是一個經過翻譯、部署以及安裝的流程模型,它包括業務流程規范。用戶可以使用 ProcessTemplateData 來查詢流程模板的數據,它能返回很多信息,例如這些信息包括該流程是否是長期運行的流程,還包括它所獲得輸入消息清單以及輸出消息清單等。清單 2 中的代碼片斷顯示了用戶如何訪問 ProcessTemplateData 對象以及查詢輸入消息的類型,這些消息正是用戶所期望的。

    清單 2. 查詢 ProcessTemplateData 對象
    
    ProcessTemplateData templateData = 
    BusinessProcess.getProcessTemplate(templateName);
    
    String inputTypeName = 
    	templateData.getInputMessageTypeName();
    

    用戶使用 ClientObjectWrapper 在調用者和流程引擎之間封裝消息和變量。

    當通過 EJB 接口訪問流程引擎時:

    • 調用參量自動由應用程序服務器反序列化。
    • 消息和變量都被反序列化。

    ClientObjectWrapper 類將反序列化操作延遲,直到能訪問封裝的消息或者變量為止,這樣流程引擎才能夠建立適當的類裝載器。

    如果用戶有包括復雜數據類型的消息,那么必需從該流程中獲得包含類的客戶端 jar 文件,并將其復制到 portlet 的 WEB-INF/lib 中。 下載 中的代碼演示了如何獲得這些數據類型。用戶得到的類型就是在 XSD 中定義的類型,它們并不是 Java 類型。因此,不能調用 instanceof 來檢查數據類型。

    封裝器包括 WSIFMessage,它是一組指定部件的容器。清單 3 顯示了用戶如何迭代以獲得 WSIFMessage 中的部件。

    清單 3. 訪問的 WSIFMessage 的部件
    
    ClientObjectWrapper replyWrapper = ...
    WSIFMessage wsifMessage = (WSIFMessage) 
    	replyWrapper.getObject();
    Iterator partNames = wsifMessage.getPartNames();
    while (partNames.hasNext()) {
         String partName = (String) partNames.next();
        Object partValue = wsifMessage.getObjectPart(partName);
    }
    

    清單 4 顯示了如何獲得消息的底層 WSDL 模型,例如在用戶得到了要提交的輸入數據清單時就需要如此操作。

    清單 4. 訪問消息的 WSDL 模型
    
    WSIFMessage inputMessage = … ;
    Map inputParts = 
    		inputMessage.getMessageDefinition().getParts();
    Iterator partNames = inputParts.keySet().iterator();
    while (partNames.hasNext()) {
    		String partName = (String) partNames.next();
    }
    

    創建輸入 JSP
    現在可以開始準備創建用于輸入數據的 JSP。

    下載 zip 文件的 ProcessStarterPortletView.jsp 代碼內容復制到用戶 portlet 項目 jsp/html 目錄中的 ProcessStarterPortletView.jsp 中。

    ProcessStarterPortletView JSP 將 stock 符號作為輸入,并將其發送到 portlet 中處理,如圖 6 所示。

    創建輸出 JSP
    接下來需要添加 JSP 來顯示 stock 查詢。

    1. 選擇 html 文件夾。
    2. 單擊右鍵,然后選擇 New => JSP File
    3. 將其命名為 ProcessStarterOutput.jsp,如圖 4 所示。

      圖 4. 創建輸出 JSP
      圖 4. 創建輸出 JSP

    4. 復制 zip 文件中 ProcessStarterOutput.jsp 的代碼,并且將其粘貼到剛剛創建的 JSP 文件中。

    顯示流程的 PIID
    當此代碼實例化可中斷性流程時,它相應地獲得了一個 Process Instance Identifier (PIID)。要顯示該 PIID ,需要創建一個 JSP。

    1. 按照前面章節所述的步驟再創建一個 JSP 文件,命名為 ProcessStarterOutputWSIF.jsp。
    2. 復制 zip 文件中 ProcessStarterOutputWSIF.jsp 的內容,并且將其粘貼到剛剛創建的 JSP 中。

    測試 portlet
    下載的文件中還包含另一個 EAR 文件,即 StockProcessSample.ear,它包括運行該流程的應用程序。

    測試該 portlet:

    1. 使用 WebSphere Application Server,如同在 WebSphere Portal 應用服務器中安裝單獨的企業應用程序一樣來安裝 StockProcessSample.ear 文件。
    2. 接下來,在項目上單擊右鍵,然后選擇導出,將 portlet 項目作為 WAR 文件從 Application Developer 中導出。
    3. 在導出屏幕中選擇 Export as a war file,然后為文件命名。
    4. 使用 WebSphere Portal 的管理 portlet 來安裝導出的 portlet,然后將其添加到頁中。
    5. 瀏覽到存有 portlet 的頁。用戶應該可以看到類似圖 5 中所示的 portlet。

      圖 5. 測試 portlet
      圖 5. 測試 portlet

    6. 輸入符號(例如 IBM),然后單擊 Submit。該流程的結果如圖 6 所示。

      圖 6. 查看流程結果
      圖 6. 查看流程結果

    配置流程模板
    利用 portlet 用戶可以配置流程模板的名稱。安裝完 portlet 后,可以使用 WebSphere Portal 中的 Manage Portlets 來更改 Portlet Setting 以指向用戶想要使用的任何模板。此 portlet 既能支持接收輸入消息的簡單數據類型又能返回輸出消息的簡單數據類型。對于復雜的數據類型,需要對代碼做一點修改。

    查看 BPE API Javadoc
    用戶可以在 Server Foundation 目錄樹中找到用于 BPE API 的 Javadoc:

    <WAS>\web\apidocs\index.html, package com.ibm.bpe.api

    結束語
    在本文中您看到了如何創建 portlet 與業務流程進行交互。您可以使用 Process Choreographer 提供的業務流程 Java API 來訪問會話 bean 。

    研究一下給定流程模板的輸入清單,您會看到如何使用帶有給定輸入的 API 來實例化業務流程。為簡單起見,這里的實例只支持簡單的數據類型。現在您可以修改 portlet 以支持復雜的數據類型。

    參考資料

    下載
    Name Size Download method
    0502_gadepalli-PortetProcessCode.zip 2467 KB FTP|HTTP
    *關于下載方法的信息
    作者簡介
    Varadarajan Ramamoorthy 是美國 Lotus 公司 IBM Software Services 方面的一位高級顧問。他在位于北卡羅萊納州的羅利 IBM Research Triangle Park Lab 工作。他在 WebSphere Portal 方面有五年多的工作經驗,一直與客戶一起創建涉及 WebSphere Portal 方面的解決方案。


    Vishy Gadepalli 是 Raleigh WebSphere Enablement Team 的成員之一。他在 IT 領域有七年多的工作經驗,并且在過去的三年里一直從事客戶預定涉及 WebSphere Portal Server 等方面的工作。他已經撰寫了大量論文,這些論文在 IBM 內外廣泛發表。他還在許多涉及 WebSphere Portal Server 以及 WebSphere Portal Server 如何與其他后端集成的會議上做過演講。 Vishy 同時還是 WebSphere Portal Primer 第一版的合作者之一。

    posted on 2005-04-22 12:23 笨笨 閱讀(375) 評論(0)  編輯  收藏 所屬分類: J2EEALLWeblogic Portal
    主站蜘蛛池模板: 全亚洲最新黄色特级网站 | 亚洲AⅤ永久无码精品AA| 亚洲午夜精品一区二区公牛电影院| 免费成人高清在线视频| 亚洲av无码不卡| 一个人免费视频在线观看www | 国产成人综合亚洲亚洲国产第一页| 国产成人亚洲精品蜜芽影院| 日韩一级免费视频| 国产精品亚洲а∨天堂2021| 亚洲乱亚洲乱少妇无码| 97在线免费视频| 亚洲精品免费视频| 成人特黄a级毛片免费视频| 亚洲性色AV日韩在线观看| 日本xxwwxxww在线视频免费| 日本高清免费中文在线看| 亚洲精品无码久久久久去q | 视频免费在线观看| 亚洲一区二区三区电影| 希望影院高清免费观看视频| 亚洲av永久中文无码精品| 亚洲国产成人久久综合碰| 国内精品免费久久影院| 亚洲国产成人久久综合一| 很黄很色很刺激的视频免费| 美女一级毛片免费观看| 亚洲成色在线综合网站| 插B内射18免费视频| 免费一级毛suv好看的国产网站| 好看的电影网站亚洲一区 | 韩国18福利视频免费观看| 四虎精品免费永久免费视频| 久久精品国产96精品亚洲| 成年轻人网站色免费看| 久久久精品国产亚洲成人满18免费网站| 亚洲AV日韩AV鸥美在线观看| 午夜一区二区免费视频| 国产A∨免费精品视频| 亚洲国产成人精品久久| 中文字幕专区在线亚洲|