プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Content: Imagingの管理
12c (12.2.1.3.0)
E91954-03
目次へ移動
目次

前
次

10 ワークフロー・エージェントについて

この項では、Business Process Execution Language (BPEL)について説明します。

10.1 Business Process Execution Language

BPELはWebサービスとのやりとりを指定するための実行可能言語です。BPELはWebサービス相互作用モデルを拡張し、ビジネス・トランザクションとユーザーによる操作のサポートを実現します。BPELは、複数の同期および非同期サービスをコラボレーティブなトランザクション・プロセス・フローに構成するための明確な標準として台頭しつつあります。SQLがデータを管理するものであるのに対して、BPELはビジネス・プロセスを管理するものです。

BPELを使用して、他のアプリケーションで使用可能なサービスを定義できます。プロセスを開始するために必要なデータの定義から、ユーザーがプロセスを操作するために使用可能なフォームまで、プロセスのあらゆる要素を定義します。これらのコンポーネントは1つのコンポジットにバンドルされ、ワークフロー・サーバーにデプロイされます。

ワークフロー・プロセスをImagingと統合するには、次の手順を実行する必要があります。

  1. ワークフロー接続を作成します(「ワークフロー接続の作成」を参照)。

  2. ワークフロー・プロセスが定義されたアプリケーションを作成します(「アプリケーションの作成」を参照)。

  3. Imagingユーザー・インタフェースでアプリケーションを作成するプロセスの一環として、ワークフロー・プロパティを構成します(「ワークフロー・プロパティの構成」を参照)。

10.1.1 ワークフロー・プロパティの構成

ワークフロー・プロセスは、アプリケーションの作成時にアプリケーションに追加することも、既存のアプリケーションを変更して追加することもできます。ワークフロー・プロセスの追加は、アプリケーション・ワークフロー構成ページから始めます。ワークフローを使用するようにアプリケーションを構成する前に、ワークフロー・サーバーへの接続が作成されており、必要なワークフロー・コンポーネントがサーバーで使用可能であることを確認する必要があります。ワークフロー・サーバー接続には、名前、プロトコル、サーバーおよびポートが含まれている必要があります(例: name=t3://sta00319:7001)。その後、アプリケーションを作成する際に、ワークフロー・サーバー・プロパティ・ページでワークフロー接続を選択します。Imagingでは、サーバーを認証して、デプロイされたワークフロー・コンポーネントを検出する必要があります。

アプリケーションのサーバー接続を選択すると、ワークフロー・コンポーネントのリストが特定されます。1つのワークフロー・コンポーネントで様々なサービスが提供される場合があるため、ワークフロー・コンポーネント・プロパティ・ページで、使用するサービスを指定する必要があります。サービスは複数の方法で起動できるため、プロセスの開始に使用する操作も指定する必要があります。この操作は非同期とみなされ、ワークフローへの一方向の通信です。Imagingは、それを使用してプロセス・インスタンスを開始し、応答を待機しません。ビジネス・プロセスが完了するまでに数時間または数日かかる場合があります。

操作を選択すると、プロセスを開始するために提供する必要があるデータがImagingで認識されます。これをペイロードと呼びます。ワークフローはWebサービスを使用するため、ペイロードは、サービスを定義するWeb Services Description Language (WSDL)に含まれているデータを表します。このデータは、定義されたデータ型を含むスキーマとして表されます。ワークフロー・ペイロード・プロパティ・ページには、ペイロード・タイプと、マッピング関数と呼ばれる使用可能な値のリストが表示されます。ワークフロー・ペイロード・マッピング関数は、特定の型(テキスト、数値、日付など)の値を返します。ペイロード値が日付を受け入れる場合、日付を返すマッピング関数が表示されます。テキスト関数が日付に正しく評価されない場合は、使用可能な関数のリストから除外されます。ペイロード値が文字列を受け入れる場合、すべてをテキストとして表すことができるため、すべてのマッピング関数が使用可能です。

10.1.1.1 ワークフロー・ペイロード・マッピング関数

ワークフロー・ペイロード・プロパティ・ページを使用して、Imagingアプリケーションのメタデータ・フィールドをワークフロー・プロセス・サービス・ペイロード内の要素にマップします。あらかじめ定義されたマッピング関数が、ペイロード内のシンプルな型付き要素と関連付けられます。実行時に、ドキュメントが作成され、ドキュメントのワークフロー・プロセス・インスタンスを作成するためにワークフロー・エージェントがトリガーされると、ドキュメント内のメタデータをペイロード要素値に変換するために各要素のマッピング関数が評価されます。使用可能なマッピング関数によって、システム・プロパティやアプリケーションで定義されたフィールド値など、ドキュメントの未加工のメタデータが提供される場合があります。フォーマット値という名前の特殊なマッピング関数もあり、任意の値をマップできます。このフォーマットは、定数値および他のマッピング関数からの値のカスタム連結です。

通常、マッピング関数は型に固有で、ペイロード要素のスキーマ・タイプと一致している必要があります。つまり、ペイロードの数値、小数および日付データ型は、これらの型を返すマッピング関数のみとマップできます。ペイロードの文字列データ型は通常、任意のマッピング関数とマップできます。また、フォーマット値マッピング関数は、任意のペイロード要素にマップできます。ただし、厳密に言うと、フォーマット値の戻り型は文字列なので、戻り値がペイロードのスキーマ・タイプの有効な文字列表現であることを慎重に確認する必要があります。

次の表は、使用可能な具体的なペイロードのBPELスキーマ・タイプおよび互換性のあるマッピング関数のリストです。

BPELスキーマ・タイプ マッピング関数

string、normalizedString、token

すべての関数

すべてのフィールド値

ドキュメントURLパス

anyType

すべての関数

すべてのフィールド値

ドキュメントURLパス

anyUri

DocUrl

ドキュメントURLルート

フォーマット値

byte

unsignedByte

integer

positiveInteger

negativeInteger

long

unsignedLong

short

unsignedShort

注意: Imagingでは、整数の制限がある型を使用して数値を保存します。下限があるスキーマ要素へのマッピングは可能ですが、マッピングの実行時にエラーが発生したり、データが失われることがあります。

アプリケーションID

バッチID

ドキュメント・サイズ

バージョン

フォーマット値

数値フィールド値

time

date

dateTime

作成日

変更日

ボリュームの日付

フォーマット値

日付フィールド値

Boolean

True

False

ブール・フィールド値

サポートするコンテンツ

フォーマット値

他のすべてのスキーマ・タイプ

フォーマット値

10.1.1.2 必須のペイロード要素(MinOccurs)の処理

minOccursの注釈が付いているワークフロー・ペイロード要素は、Imagingアプリケーションのフィールドをマップする際に必須として定義されています。これらの要素は、Imagingユーザー・インタフェースのワークフロー・ペイロード・プロパティ・ページでは(*)記号で示されます。

minOccurs=1のペイロード要素は必須として解釈され、Imagingにはそれらのマッピングが必要です。この場合の必須は、ペイロードでその要素を提供する必要がありますが、値は必要でないことを意味します。minOccurs=1のペイロード要素にマップされている場合でも、ペイロード要素にマップされたフィールド値がNULLである可能性があります。この場合、空の要素が渡されます。ワークフロー・プロセスにおいて、値を指定する必要があるという意味で要素を必須にする場合は、その要素にマップされるアプリケーション・フィールドの値をアプリケーション定義で必須として設定することで、必ず値が指定されるようにすることができます。ワークフロー・ペイロードのマッピングでこれを強制することはできません。

minOccurs=0のペイロード要素はオプションとして解釈され、要素のマッピングがない場合、ペイロードで提供する必要はありません。つまり、マッピングの指定もオプションです。マッピングが指定されていない場合、そのノードは、ワークフロー・サーバーに送信されるペイロードに含まれません。ただし、マッピングが指定されている場合、そのノードは常にペイロードに含まれます。マッピング関数によって返される値が空の場合も同様です。その場合は、空の要素ノードが渡されます。

注意:

ワークフロー・ペイロードでは、minOccursまたはmaxOccurs属性が1より大きい型はサポートされません。

10.1.1.3 日付フィールドのフォーマット

ペイロード・スキーマの日付または時刻ベースの型(time、date、dateTime)にマップするマッピング関数の場合、次のように、ISO 8601準拠のフォーマットに値がエンコードされます。

スキーマ・タイプ フォーマット

time

hh:mm:ss±tz

12:45:15-05:00

date

yyyy-MM-dd

2009-11-09

datetime

yyyy-MM-ddThh:mm:ss±tz

2009-11-09T12:45:15-05:00

表のように、時刻を含む型では、時間および分(hh:mm)のオフセットとして正/負のタイムゾーン指定子が使用されます。

10.1.1.4 ドキュメント・プロパティ関数

ドキュメント・プロパティ関数は、ドキュメントのシステム・プロパティの値をペイロード要素に割り当てます。たとえば、「ドキュメントID」、「アプリケーション名」、「作成日」などです。

10.1.1.5 フィールド値関数

フィールド値関数は、ドキュメント内のアプリケーション・フィールドの値をペイロード要素に割り当てます。厳密に言うと、フィールド値は、パラメータとしてフィールドの名前を受け取る関数の名前ですが、ワークフロー・ペイロード・プロパティ・ページでは、フィールドの名前でリストされたマッピング関数選択ボックス内の項目としてアプリケーションのそれぞれのフィールド定義が示されます。すべてのマッピング関数と同様に、フィールド定義の型を使用して、ペイロード要素のスキーマ・タイプと互換性があるかどうかが確認されます。互換性があるフィールド値のみが、特定のペイロード要素の横にオプションとして表示されます。

10.1.1.6 フォーマット値関数

フォーマット値は、任意の文字列値をペイロード要素に割り当てることができる特殊なマッピング関数です。フォーマット値では、実行時に指定される変数として、他の複数のマッピング関数の値をフォーマット文字列値に埋め込むこともできます。

ワークフロー・ペイロード・プロパティ・ページでフォーマット値をペイロード項目に割り当てるには、マッピング関数として「フォーマット値」を選択し、選択ボックスの横に表示される「フォーマット値の編集」ボタンをクリックします。表示される「フォーマット値の編集」ダイアログの下部で、フォーマット値を入力します。上部の選択リストには、編集ボックスに挿入できる選択可能なマッピング関数が表示されます。(項目は、現在入力されているテキストの末尾に追加されます。)

フォーマット値の文字列を手動で作成する際、マッピング関数の変数は、大カッコで囲まれたマッピング関数名([DocUrl]など)を使用して、値内にエンコードされます。フィールド値をコード化するには、マッピング関数(「フィールド値」)、コロンおよび目的のフィールド名をすべて大カッコで囲んで指定します。

たとえば、カスタムURLを格納する必要があるデータ変数がワークフロー・プロセスにあるとします。カスタムURLには、ドキュメントのメタデータで使用可能なcustomerIdと、ドキュメントの一意識別子を含める必要があります。URLのルートはハードコードされています。この例は、フォーマット値内に次のようにコード化できます。

http://example.com/svc.jspx?custId=[FieldValue:custId]&docId=[DocId]

10.1.1.7 サポートするコンテンツ関数

サポートするコンテンツ関数は、ドキュメントに関連付けられているサポートするコンテンツ・データをワークフロー・プロセスのペイロード要素にマップします。サポートするコンテンツは、プロセス・ペイロード内の任意のcomplexノードにマップできます。サポートするコンテンツ関数をマップする場合、サポートするコンテンツ・キーとXPathパラメータの両方が必要です。サポートするコンテンツ・キーは、XMLコンテンツをドキュメントと関連付けるために使用され、30文字に制限されています。XPath式は、ペイロード要素にマップされるXMLコンテンツ内のノードを特定し、224文字に制限されています。

実行時にcomplexペイロード要素にマップすると、サポートするコンテンツは、サポートするコンテンツ要素を単にVerbatimにコピーするのではなく、complexペイロード要素への要素のマッピングとして処理されます。ペイロード要素内の各要素は、1つずつ処理されます。それぞれの要素について、XPathパラメータで特定されたノードから始めて、サポートするコンテンツ内で一致する要素が検索されます。一致する要素が見つかると、XML内の一致する要素の値がペイロード要素に割り当てられます。サポートするコンテンツの処理によって、サポートするコンテンツのXMLとペイロードのXML間の名前空間の競合の問題が回避されます。

サポートするコンテンツをペイロード内のあらゆるタイプのノードに割り当てることもできます。このようにマップした場合、XPathで特定されたサポートするコンテンツがanyType要素にコピーされます。このように使用する場合、名前空間がペイロード内で正しく定義されないことがあるため、サポートするコンテンツでは名前空間接頭辞を使用しないでください。

10.1.2 ペイロードの制限

通常、ワークフロー・ペイロードのマッピングでは、複雑な型のネストを含むペイロードを処理できます。ただし、処理できない標準のXSD構成がいくつかあります。次のいずれかを含むワークフロー・プロセス・サービス・ペイロードの定義を使用することはできません。

  • 10を超える階層の深さ

  • 選択要素タイプ

  • minOccursが1より大きいリスト要素

リスト形式の構造を含む、minOccursが0または1のペイロード定義(maxOccursが1より大きい、または無制限)を使用できますが、配列内の1つの要素へのマッピングのみがサポートされます。

10.1.3 セキュアなワークフロー・サービスのマッピング

ワークフロー・プロセス・サービスにサーバー側のOracle Web Services Manager (OWSM)ポリシーが適用されている場合、Imagingアプリケーションのワークフロー構成で、クライアント側のポリシーも使用するように追加のパラメータを指定する必要があります。これらの追加の構成パラメータは、通常のワークフロー・プロセス・インスタンスのペイロード・マッピングを指定するワークフロー・ペイロード・プロパティ・ページで指定します。サービスにOWSMポリシーが適用されている場合、そのポリシーが検出され、ポリシー名が記載された追加のペイロード・マッピング・セクションが表示されます。すべてのOWSMポリシーに使用可能なキーの完全なセットは、OWSM APIのoracle.wsm.security.util.SecurityConstantsクラスによって提供されています。ただし、Imagingでは完全なセットがフィルタにかけられ、使用されているサーバー・ポリシーに関連するパラメータのみが表示されます。現時点では、 wss_username_tokenおよびwss11_username_token_with_message_protectionポリシーのパラメータのみが提供されています。

使用可能なパラメータは次のとおりです。

パラメータ 説明 ポリシー

csf.key

ポリシーのユーザー名とパスワードを指定します。

wss_username_token

wss11_username_token_with_message_protectionポリシー

recipient.key.alias

送信されるメッセージを暗号化するためのキー・ストア別名を指定します。

wss11_username_token_with_message_protectionポリシー

10.1.3.1 メッセージ保護ポリシーの構成

メッセージ保護ポリシーを構成する際には、メッセージの暗号化をサポートするように、適切な資格証明と証明書も構成する必要があります。デフォルトのインストールでは、$DOMAIN_HOME/config/fmwconfigディレクトリにあるjps-config.xmlファイルで必要なキーを定義します。このファイルでは、デフォルトのキーストア・ファイルの場所も定義します。jps-config.xmlファイルは通常、fmwconfigディレクトリ内で、ファイル名default-keystore.jksを使用してこのファイルを検索するように構成されています。しかし、このファイルはデフォルトでは存在しないため、指定する必要があります。デフォルトのjps-config.xmlファイルでは、次のキーを定義します。

説明 ポリシー

keystore-csf-key

キーストア・ファイルを開くための資格証明を指定します。資格証明のパスワード部分のみが使用されます。

enc-csf-key

メッセージの暗号化に使用されるキーストア内の暗号化証明書にアクセスするための資格証明を指定します。

sign-csf-key

メッセージの署名に使用される証明書にアクセスするための資格証明を指定します。暗号化と署名の両方にenc-csf-keyを使用するようにjps-config.xmlファイルを構成することもできます。その場合、sign-csf-keyは必要ありませんが、定義しても問題が発生することはありません。

Oracle Web Services Managerのキーストア、CSFキーおよび別名を設定する方法の詳細は、Oracle Web Services Manager管理者ガイドを参照してください。

10.1.4 WebLogic Serverワーク・マネージャの設定の変更

ワーク・マネージャは、多数のスレッドを1つのプロセスに割り当てる方法を制御するためのWebLogic Serverの概念です。Imagingでは、多数のスレッドを入力エージェントおよびワークフロー・エージェントに割り当てる方法を制御し、システムに対する負荷を増減するために使用されます。新規インストール時には、20個のスレッドがワークフロー・エージェントに割り当てられます。WebLogic Server (WLS)ワーク・マネージャのWorkflowAgentMaxThreadsConstraintのデフォルト設定(20)をシステム・ニーズに合わせて変更することで、WLSが入力エージェントおよびワークフロー・エージェントに提供するスレッドの数を再構成できます。1台のマシンで遅延が発生してバックログが生成されることがないように、すべてのシステムでスレッドの最大数を同等に調整する必要があります。値-1または0を指定すると、制約は無効になります。1より大きい値を指定すると、スレッドの数が指定した数に制限されます。

スレッドの設定を更新するには、WLS管理コンソールで次の手順を実行します。WebLogic Serverの詳細は、Oracle Weblogic Server Weblogic Webサービス・リファレンスを参照してください。

  1. WebLogic Serverコンソールを開き、「デプロイメント」をクリックします。
  2. 「Imaging」デプロイメントを選択して、Imagingの詳細を表示します。
  3. 「構成」タブ、「負荷」タブの順にクリックして、「ワーク・マネージャ」リストを表示します。
  4. 「WorkflowAgent」など、調整するエージェントを選択します。
  5. 「最大スレッド数制約」を選択します。
  6. スレッド数を新しい最大スレッド数に更新し、「保存」をクリックします。
  7. 管理対象サーバーを再起動すると、新しいスレッド数が有効になります。

10.1.5 ワークフロー接続のCSF資格証明の使用

資格証明ストア・フレームワーク(CSF)資格証明は、別名をキーとし、CSF内の名前付きマップ内に保存されるユーザー名/パスワードのペアです。Oracle Web Services Manager (OWSM)と統合するため、Imagingは、oracle.wsm.securityという標準のOWSM CSFマップを使用します。

資格証明を作成するには、Enterprise Manger (EM)またはWebLogic Scripting Tool (WLST)を使用します。詳細は、「ワークフロー接続のCSF資格証明の構成」を参照してください。

10.1.6 ワークフロー・エージェントの再試行シーケンス

ワークフロー・エージェントがワークフロー・サーバーに接続できなかった場合、接続が即座に3回試行されます。3回の試行がすべて失敗した場合、デプロイ済プロセスのJMSキューにメッセージが返されます。BpelInjectorQueue JMSキューには、5分間の再試行の遅延が構成されています。後続の再試行のたびに、メッセージを処理するための操作が手動で3回再試行されます。手動の再試行メカニズムと同様に、メッセージが(3回のプロセス試行について)2回、キューに返されます。3回目のメッセージ処理の試行が失敗すると、最後に受け取った例外の例外メッセージなど、ドキュメントの詳細がワークフロー・エージェントのフォルト表に書き込まれます。メッセージはキューに返されません。これによって、10分間に9回の再試行が行われます。注意: なんらかの理由で、ドキュメントの詳細をフォルト表に記録できなかった場合は、リクエストが破棄されることがないよう、メッセージがキューに返されます。

10.1.7 ワークフロー・フォルト表の構成

フォルト表に記録されたワークフロー・エージェントの処理の失敗は、WebLogic Scripting Tool (WLST)の診断コマンド・セットを使用して管理します。これらのコマンドにアクセスするには、Enterprise Content Managementの$ORACLE_HOME/common/binディレクトリからWLSTを実行する必要があります。また、WLSTに接続する際には、管理サーバーではなく、Imaging管理対象サーバー・インスタンスに接続する必要があります。これらのコマンドは、Imaging管理対象サーバーがオンラインになっている場合にのみ使用可能です。

WLSTで使用可能なワークフロー診断コマンドは次のとおりです。

  • sumIPMWorkflowFaults: 選択された日付、アプリケーションIDまたはバッチIDによってグループ化して、ワークフロー・エージェントの処理中に発生した処理の失敗をカウントします。

  • clearIPMWorkflowFaults: ワークフロー・エージェントの処理中に発生した処理の失敗をクリアします。

  • listIPMWorkflowFaults: ワークフロー・エージェントの処理中に発生した処理の失敗の詳細を表示します。

  • repairIPMWorkflowFaults: ワークフロー・エージェントの処理中に発生した処理の失敗を修復します。

これらのフォルトの使用および構文の詳細は、『Oracle Fusion Middleware WebCenter WLSTコマンド・リファレンス』を参照してください。

10.1.8 ワークフロー・プロセス・インスタンスの開始

ユーザーがワークフロー・プロパティをすべて構成すると、それらを使用してワークフロー・プロセスを開始できます。ドキュメントがImagingにアップロードされると、新しいコンテンツを示すメッセージがワークフロー・エージェントに送信されます。ワークフロー・エージェントはこれらのメッセージを監視し、ドキュメントのアプリケーションがワークフローを使用するように構成されているというメッセージを受け取ると、その構成を使用して特定のドキュメントの値のペイロードを作成し、サービスをコールしてワークフロー・プロセスを開始します。

ユーザーがImagingでドキュメントを参照する必要がある場合は、ビューアを起動するために必要な情報を提供するようにワークフロー・プロセスを設計する必要があります。そのためには、ビューアURLを格納するペイロード値を定義します。ワークフロー設計者は、ビューアURLプロパティのターゲットを開くボタンやリンクを含むフォームを作成する必要があります。ビジネス・プロセスによってImagingで情報を更新する必要がある場合は、Imaging APIを使用して更新できます。APIの使用方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Content: Imagingの開発』を参照してください。Imaging APIは、プロセス設計者がワークフロー・プロセスに簡単に追加できるWebサービスとして公開されています。この場合も、設計者は、ドキュメントの更新されたデータを通信するための十分な情報をプロセスの開始時に収集していることを確認する必要があります。たとえば、ドキュメントIDやアプリケーション・フィールド名などが必要です。

注意:

WebLogic Scripting Toolを使用してドキュメントをワークフローに再送信するには、submitIPMToWorkflow() WLSTコマンドをコールします。ドキュメントが送信されたことを示す確認メッセージが表示されます。ただし、ワークフローを使用するように構成されていないアプリケーションにドキュメントが保存されている場合、アクションは実行されません。