2011年1月28日 星期五

[BPMN 2.0] 迴圈的使用

一般來說,由於BPMN Notation是unstructure的表示法,因此不像是BPEL語言,會需要像是While這樣的語法來implement迴圈,通常都是用直接拉回去配合上Exclusive OR的Gateway就可以做到效果:

如上圖所示,就是最基本的迴圈。

BPMN也支援Subprocess Loop的方式來執行迴圈,你可以將需要重複多次執行動作的Activity放在一個subprocess之中,就可以不需要自己去implement上面那些變數的初始化或者是Exclusive OR Gateway了。

下面是個範例:

Subprocess展開前


Subprocess展開後



看起來應該比較簡單了吧?
該怎麼設定迴圈的執行次數,內部變數...等資料呢?

Double-click Subprocess,選擇Loop Characteristics的tab,點選Loop


選擇Loop Condition右手邊的那個小icon打開Express Builder


看一下左邊的Variable區,你會發現你的Subprocess "Loop Demo" 中自動有一個loopCounter的變數,簡單的說,這個變數是扮演一般我們 for-loop 中間的 "i" 的角色。

你就可以和寫for-loop迴圈一樣去指定 loopCounter <= count,來定義迴圈的執行條件了!




[Oracle BPM/SOA 基礎] 第一個BPM流程

現在,我們來做一個簡單的BPM流程吧!

背景設定為一個很簡單的採購流程,使用者上網提出採購申請,之後經過主管同意後,流程會將此採購資料寫入檔案供採購系統抓取,夠簡單吧? 這個簡單流程可以提供各位在一個BPM平台上面的開發是如何進行。

開始之前,請先確定你的BPM開發環境已經完成安裝與設定,你可以參考小弟先前文章完成此步驟。

啟動你的JDeveloper,不管你喜歡與否,這個IDE是Oracle BPM產品流程設計現在唯一的工具,試著熟悉他吧!

新增應用程式專案

選擇 "New Application",會有一彈出的對話框讓你輸入包括Application Name、Directory、package prefix等資訊,特別注意的是JDeveloper是一個general purpose的IDE,所有Oracle產品應用都是透過這IDE開發,所以在BPM專案的開發上面,Application Template記得要選"BPM Applicaiton"。



2011年1月27日 星期四

[Oracle BPM/SOA 基礎] 如何增加使用者至BPM Server中

在Oracle BPM中,參與流程的使用者需先被定義於BPM Server之中,而BPM的使用者資料來源為何哩? 來自於底層的WebLogic Server的security realm!!

WebLogic security realm中使用者資料可以來自很多地方,預設是使用WebLogic本身所embbed的一個LDAP server,當然你也可以config WebLogic讓他連到外面的LDAP Server或是特定Schema的database之中,但這不在我們的討論範圍之中,此文章我要介紹你如何在自己的開發環境之中,使用WebLogic embbed LDAP server,並新增測試所需要的使用者在此server之中。

首先,先把使用者給產生出來。連入WebLogic console,新增你所需要的使用者。(不知道怎麼做嗎? 提示一下:"安全範圍" --> "myrealm" --> 使用者與群組 --> "使用者" --> "新建")

接下來,這個使用者有些BPM所需要的資訊是存放在LDAP tree之中的(如:工作通知時的使用者email帳號、使用者顯示的名稱、使用者的直屬上司是誰...等),既然他是LDAP Server,我們就應該可以透過標準的LDAP連進去修改他囉? 沒錯! 這是可以的,只是要解除預設的封印!

首先你需要連接到WebLogic Console,在網域結構中按下你的bpm_domain,在右方的頁簽中選擇 "安全性" --> "嵌入式LDAP"。


將你喜歡的密碼打入【證明資料】與【確認證明資料】,儲存之後重新開啟server。

接下來,你需要一個LDAP browser讓你連接進WebLogic embbed LDAP server,我個人是使用JXplorer,你可以從這裡下載免費的版本。

WebLogic embbed LDAP server連接的方式是走標準的WebLogic Server的IP與port,預設7001(請根據你的環境修改),連接的DN為cn=Admin,密碼是你剛才所設定在【證明資料】的值。


接下來,你就可以針對你剛才所新增的使用者,另外增加其他的必要資訊了!



2011年1月26日 星期三

[Oracle BPM/SOA 基礎] BPM/SOA Server JVM參數設定

由於Oracle BPM/SOA對於記憶體的需求若渴,因此JVM參數的設定會相當程度影響server執行的效能。

對於64-bit JVM, 我會建議如果可以的話,將Heap size設定至少大於2048m,PerGen Space設定為512m~768m。

要更動SOA啟動的JVM參數,你可以修改<Domain>\bin\setSOADomainEnv.cmd檔案。

64-bit JVM需找出PORT_MEM_ARGS,32-bit則修改DEFAULT_MEM_ARGS參數,下面是我的8G RAM Windows 7的BPM環境設定,提供給各位參考:


set JAVA_OPTIONS=%JAVA_OPTIONS%
set DEFAULT_MEM_ARGS=-Xms512m -Xmx1024m
set PORT_MEM_ARGS=-Xms3200m -Xmx3200m


if "%JAVA_VENDOR%" == "Oracle" goto OracleJVM
set DEFAULT_MEM_ARGS=%DEFAULT_MEM_ARGS% -XX:PermSize=128m -XX:MaxPermSize=512m
set PORT_MEM_ARGS=%PORT_MEM_ARGS% -XX:PermSize=512m -XX:MaxPermSize=768m

另外,如果你開發的過程中遇到JDeveloper太慢或complain記憶體問題,你也可以透過修改編輯<Middleware_Home>\jdeveloper\ide\bin\ide.conf檔案,以變更JDeveloper所使用的JVM參數:

AddVMOption  -Xmx1280M
AddVMOption  -Xms512M

[Oracle BPM/SOA 基礎] 安裝BPM/SOA Suite 11gR1PS3

這是小弟一系列Oracle Fusion Middleware教學文件的第一站,有鑑於網路上面鮮有繁體中文版本的Fusion Middleware技術資料,本系列文章將會針對整個Fusion Middleware各種不同產品提供說明。

本文先針對Business Process Management (BPM) 與Service-Oriented Architecture (SOA)這部分產品安裝進行說明。在安裝之前,各位請先花一點時間看一下簡單的產品架構說明,這會幫助各位了解產品安裝過程的各個步驟。

架構說明

首先,Oracle Fusion Middleware產品線的主要使用Java做為核心語言,也因此,幾乎所有的產品底層都會需要一個application server(OSGi或非集中化架構的除外),Oracle採用的是WebLogic Server做為此底層JEE Container,這也是待會在執行安裝步驟之時,你會需要先進行WebLogic Server安裝的主要原因。

而針對【整合】這個主題,Oracle的核心產品就是SOA Suite,如下圖所示,簡單來說他是一個套餐產品,內容包含了企業內部在整合多個現存系統所需要的元件:BPEL、Mediator、Service Bus、Rule Engine、人工流程、B2B與BAM... 等等。這些元件在跨系統整合過程中各自扮演了不同的角色,我也將在這一系列的之後技術文章簡單介紹各主要元件的使用。


那SOA又怎麼會和BPM扯在一起呢?