https://blogs.oracle.com/fmwinaction/entry/oracle_bpm_adding_an_attachment
最近、実際の文書を表すバイナリ属性(base64エンコード)を含むペイロードを受け入れ可能なヒューマン·タスクをインスタンス化したいという、お客様からの要求を頂きました。その要件とは、この属性は、ワークリストUI中でリンクとしてタスクが割り当てられたユーザに表示され、そのリンクからユーザがローカルマシンにドキュメントをダウンロードし、レビューできる、というものです。複数のオプションを活用しましたが、ほとんどの場合は大幅にカスタマイズが必要でした。
できるだけ多くのOracle BPMの標準機能を利用するため、このドキュメントを読み取り専用の添付ファイルとして追加することにしました。この操作はワークリストアプリケーション内で非常に簡単に設定できますが、ヒューマン·タスクの初期化中にドキュメントを添付するというのはいささか難しくなります。
(BPM11g PS4とPS5で)少々調査した結果をここにまとめます。
1. 非同期BPMプロセスを作成します。このXMLスキーマを使って2個のビジネスオブジェクト(FullPayloadとPartialPayload)を作成します。
2. 先ほどのビジネスオブジェクトを使って、2個の変数(vFullPayload と vPartialPayload)を作成します。
3. スタートメッセージを持つスタートイベントを設定し、入力引数のデータ型としてFullPayloadビジネスオブジェクトを使います。
4. ユーザタスクをプロセスに組み込みます。いつものようにユーザタスクを実装します。入力データ型はvPartialPayloadデータオブジェクトを使い、タスクをお好きなテストユーザ(今回はjcooper)に割り当てます。
5. ここがメインです。データアソシエーションを開始し、以下のようにペイロードをexecdataにマッピングします。
From | To |
---|---|
vFullPayload.attachment.mimetype | execData.attachment[1].mimeType |
vFullPayload.attachment.filename | execData.attachment[1].name |
bpmn:getDataObject('vFullPayload')/ns:attachment/ns:content | execData.attachment[1].content |
'BPM' | execData.attachment[1].attachmentScope |
false() | execData.attachment[1].doesBelongToParent |
'weblogic' | execData.attachment[1].updateBy |
xp20:current-dateTime() | execData.attachment[1].updateDate |
(注意)
ご自身のプロジェクト中のxsdフォルダにある<HumanTask>WorkflowTask.xsdファイルをチェックして、attachmentScopeおよびstorageTypeの異なるオプションがあることを確認して下さい。
6. これでプロセスは完成です。標準のADF UIをビルドし、プロセスとUIをBPMサーバにデプロイしてテストをしましょう。以下はbase64エンコードされたPDFファイル(application-pdf.txt)の例です。
7. BPMワークリストアプリケーションにログインし、結果を確認してみましょう。
(注意)
Oracle BPMはデフォルトでは添付ファイルのサイズは2MBまでに制限されていますので、それより大きな添付ファイルを使いたい場合は、Oracle WebCenter Contentのようなコンテンツ管理サーバを使い、参照を渡すことを推奨します。Oracle BPMを設定して添付ファイルをOracle WebCenter Contentに直接格納することも可能です。 storageTypeやucmMetadataItem属性を使うことができると思っています。一度テストでOracle WebCenter Contentにアクセスしてみようと思っています。
0 件のコメント:
コメントを投稿