Q) Initiatorユーザーアクティビティに初期値を設定したいのだけど、データベースから取得した値を使いたい。それって可能なの?
A) 11gと12cではやり方が違いますが、実現できます。
11gまで(11.1.1.9も含みます)
Initiatorに対応する画面内でManaged Beanを使ったり、ユーザーアクティビティのデータ・アソシエーションでXPath式を使ったりする必要があります。Initiatorの前には、スクリプトタスクのみ配置可能という制限があるため、Database Adapterを使うなど、サービスコールを使うことはできません。もし配置すると、ブロッカーに成り得ないという警告メッセージがBPM Studio(JDeveloper)で出てきます。
12c(12.1.3)から
12c(12.1.3)では、その制限がなくなっています。つまり、上記のような配置をしても動作する、ということですね。
動作確認のため、次のようなサンプルアプリケーションを作ってみました。このコンポジット・アプリケーションは、BPMNプロセスとユーザータスクで構成されており、dbRefernceというサービスを参照しています。
このdbReferenceというサービスはDatabase Adapterを介して、データベースに定義したFunctionを呼び出しています。このFunctionは、簡単のため実行開始時の日時をIDとして取得するようにしてあります。
# もちろんXPath式を使えばこの値は簡単に取得できますが、あくまでもサンプルです。
先ほどのBPMプロセス内のサービスタスクで、データアソシエーション(データマッピング)し、Functionを呼び出した結果を取得します。create or replace function getID RETURN VARCHAR2 IS BEGIN RETURN to_char(systimestamp,'yyyy/mm/dd hh24:mi:ss.ff3'); END;
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvN5OjTUx5MWEnKLmPAXqyB-_Xj6CTFQSTKnveZD2ZJqP-8iHR3iA8802-K3ystSleP04PZ8i6CIzHhmlEzbpVoDoVS2jy1zn1TC3VPWsD_srO4DjtSyPB50nh9QB6_IPIzjvCvQP-NXw/s640/12c_DataAssociation.png)
Initiatorタスクに、取得した値を渡すよう、データアソシエーションを設定しておきます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1PbjU0KmpsOFcPTkHA4u6kiNiIogJxrzjfBhmoIukaHo2Xsyz_WlaNKdjWZt9cBjms0MtZ8U_XE6JVwlz2CRSofu8hid9Htxg13wWjYSXp7KZHT9zE4qP-cpMEWRFzBOde681ImFpUsc/s640/12c_DataAssociation2.png)
ユーザータスクの画面は出来合いのものを使うことにして、デプロイしました。
BPM Workspaceから実行してみます。
[アプリケーション]からプロセスを起動してみると・・・
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5L0lW21n8jtXHvc4u8RudJSPMZpSR3zC34HoDTXCfBNotkInfaJ0KnyQoldd9QatRpeA3hsZgMEMJB-jum1ceWsn1XifWcZfzAVPANdgyOPk-BqEEzHs0YLz1P4QW1K6Rky2ZNv_gzOI/s640/12c_Workspace.png)
dbReferenceサービスを使って取得したデータを表示しているようです。
Fusion Middleware Controlからも確認します。
上図の赤枠で囲んだ部分をクリックすると、データの入出力がXML形式で表示されます。その中身がこちら。
GETIDというFunctionを呼び出した結果が表示されていることがわかります。<auditQueryPayload auditId="5030" ciKey="40062" xmlns="http://xmlns.oracle.com/bpmn/engine/audit"> <serviceOutput> <element name="OutputParameters" isBusinessIndicator="false"> <value> <![CDATA[<OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/sp/dbReference"> <GETID>2015/05/19 20:11:51.597</GETID> </OutputParameters> ]]> </value> </element> </serviceOutput> <dataState> <dataObject name="dataObject1" isBusinessIndicator="false"> <value> <![CDATA[<dataObject1 xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2015/05/19 20:11:51.597</dataObject1> ]]> </value> </dataObject> </dataState> </auditQueryPayload>
0 件のコメント:
コメントを投稿