この章では、ヒューマン・ワークフロー・サービスの使用方法を説明します。ヒューマン・ワークフロー・サービスは、タスクのライフ・サイクル内で様々な操作を実行します。
項目は次のとおりです。
注意: 以前のリリースのOracle BPM Worklistには、フレックス・フィールドと呼ばれる機能が含まれていました。リリース11g R1 (11.1.1.4)から、フレックス・フィールドはマップ済属性と呼ばれるようになりました。 |
この項では、次のヒューマン・ワークフロー・サービスの役割について説明します。
タスク・サービス
タスク問合せサービス
アイデンティティ・サービス
タスク・メタデータ・サービス
ユーザー・メタデータ・サービス
タスク・レポート・サービス
ランタイム構成サービス
エビデンス・ストア・サービス
表32-1に、タスク・サービスに提供されるSimple Object Access Protocol(SOAP)、Enterprise JavaBeansおよびJavaサポートのタイプを示します。ほとんどのヒューマン・ワークフロー・サービスは、SOAPおよびローカルとリモートのEnterprise JavaBeans APIからアクセスできます。これらのサービスは、適切なクライアント・プロキシを使用して直接利用できます。また、プロトコル詳細を要約し、すべての通信の共通のインタフェースを提供するクライアント・ライブラリが提供されます。
表32-1 Enterprise JavaBeans、SOAPおよびJavaサポート
表32-2に、各タスク・サービスに対するSOAP Web Services Description Language(WSDL)ファイルの場所を示します。
表32-2 タスク・サービスのSOAP WSDLの場所
サービス名 | SOAP WSDLの場所 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表32-3に、様々なEnterprise JavaBeansのJNDI名を示します。
表32-3 様々なEnterprise JavaBeansのJNDI名
サービス名 | 様々なEnterprise JavaBeansのJNDI名 |
---|---|
タスク・サービス |
|
クライアント・トランザクションに参加するタスク・サービスのEnterprise JavaBeans |
|
タスク・メタデータ・サービス |
|
タスク問合せサービス |
|
ユーザー・メタデータ・サービス |
|
ランタイム構成サービス |
|
タスク・レポート・サービス |
|
タスク・エビデンス・サービス |
|
ワークリスト・サービスのクライアント・ライブラリの詳細は、第31章「カスタム・ワークリスト・クライアントの作成」を参照してください。
ヒューマン・ワークフロー・サービスは、WebサービスとRemote Method Invocation(RMI)を介してJ2EEアプリケーションと統合できます。他の管理対象サーバーやクラスタ、または他のOracle WebLogic ServerドメインにあるEnterprise JavaBeansのリモート・ルックアップを容易にするために、Oracle WebLogic Serverには外部JNDIプロバイダが組み込まれています。外部JNDIプロバイダは、リモート・サーバーのホストとポートを使用して、リモート・サーバーのEnterprise JavaBeansをローカル・サーバーのJNDIツリーにリンク付けするように構成されています。
ワークフロー・サービスでは、表32-3にリストされているEnterprise JavaBeansが公開されます。これらのEnterprise JavaBeansは、タスク問合せサービス、ヒューマン・タスクに対するADFタスク・フローの登録、埋込みワークリスト・リージョンのユースケースを完全にサポートするために、外部JNDIプロバイダを介してすべてリンクされている必要があります。
外部JNDI名のサポートを提供する手順は、次のとおりです。
Oracle WebLogic Server管理コンソールにログインします。
http://host:port/console
「ドメイン構造」で、「サービス」→「JDBC」→「外部JNDIプロバイダ」の順に選択します。
ローカルJNDIネームスペースに対するリモートEnterprise JavaBeans名を、外部JNDIプロバイダを介して同じOracle WebLogic Serverドメイン内のSOAサーバーから特定の管理対象サーバーまたはクラスタにリンク付けする場合は、注意事項が1つあります。ローカルJNDI名は、そのドメイン内のすべての管理対象サーバーに公開されます。このようにリンク付けすると、そのドメイン内のSOAサーバー上でネームスペースの競合が発生します。これは、Oracle BPM Worklistから登録されたEnterprise JavaBeansがすでに存在しているためです。競合を回避して構成を最小限に維持する別の方法として、JNDI接尾辞を使用する方法があります。これを実行するには、リモート・ワークフローEnterprise JavaBeansのすべてのローカルJNDIリンクの末尾に一貫性のある接尾辞を追加し、接尾辞キーが含まれた単純なwf_client_config.xml
ファイルを作成します。
クライアント・プロパティは3つの方法のうちのいずれかの方法で定義できます。詳細は、第32.6.1.2項「構成オプション」を参照してください。
表32-3に示した各Enterprise JavaBeans名にJNDI接尾辞を追加し、外部JNDI名を登録します。
ejb/bpel/services/workflow/TaskServiceGlobalTransactionean_server1
ejb/bpel/services/workflow/TaskServiceBean_server1
ejb/bpel/services/workflow/TaskMetadataServiceBean_server1
TaskQueryService_server1
UserMetadataService_server1
RuntimeConfigService_server1
TaskReportServiceBean_server1
TaskEvidenceServiceBean_server1
例32-1に示すように、wf_client_config.xml
ファイルにejbJndiSuffix
要素の値のみを指定して、リモート名を定義します。JAXBオブジェクトのWorkflowServicesClientConfigurationType
を使用することも、Map<CONNECTION_PROPERTY, String>
プロパティでCONNECTION_PROPERTY.EJB_JNDI_SUFFIX
を使用することもできます。
アイデンティティ・サービスを除いて、前述のAPI(SOAP、リモートEnterprise JavaBeans、ローカルEnterprise JavaBeansおよびJava WSIF)を使用するすべてのサービスでは、認証を起動する必要があります。前述のすべてのチャネルでは、ヒューマン・ワークフロー・コンテキストを使用したユーザーIDの受渡しがサポートされています。ヒューマン・ワークフロー・コンテキストには、次のいずれかが含まれています。
ログインとパスワード
トークン
タスク問合せサービスでは、ログインとパスワードを取得し、すべてのサービスに使用するヒューマン・ワークフロー・コンテキストを返すauthenticate
操作が公開されます。ヒューマン・ワークフロー・コンテキストは、必要に応じて、各リクエストごとにログインとパスワード付きで渡すことができます。
authenticate
操作では、管理IDおよび管理パスワードを使用して、ユーザーにかわってコンテキストを作成するという概念もサポートされます。この操作により、Oracle BPM Worklistにログインしたユーザーのパスワードを利用できない場合は、そのユーザー用のコンテキストを作成できます。
ワークフロー・コンテキストは、1回取得してすべてのリクエストで使用することをお薦めします。リクエストごとにワークフロー・コンテキストを取得すると、パフォーマンスが低下する場合があります。
レルムは、アイデンティティ構成からのアイデンティティ・サービス・コンテキストです。デフォルトの構成を使用する場合、レルム名はNULLにできます。
アイデンティティ伝播は複数のSOAP Webサービス間で認証されたアイデンティティのレプリケーションで、トランザクションを1回で完了するために使用されます。SOAP Webサービスでは、Webサービス・セキュリティもサポートされます。Webサービス・セキュリティが使用されている場合は、SOAP入力にヒューマン・ワークフロー・コンテキストが存在している必要はありません。Webサービス・セキュリティは、Oracle Enterprise Manager Fusion Middleware Controlコンソールから構成できます。
注意: ヒューマン・ワークフローのSOAPクライアントは、Webサービスが保護されている場合に、Security Assertion Markup Language(SAML)トークンベースのアイデンティティ伝播を使用できるように拡張されています。 |
タスク問合せサービスに対するauthenticateOnBehalfOf
APIメソッドでは、管理ユーザーのユーザーIDとパスワードをリクエストで渡すことで、ユーザーのかわりにヒューマン・ワークフロー・コンテキストを作成できます。管理ユーザーにはworkflow.admin
権限があります。この場合は、ユーザーのかわりにパスワードを使用して作成した場合と同様のコンテキストが作成されます。
これは、バックエンド・システムがワークフロー・タスクを操作し、一方でユーザーが自分のシステムで操作する環境で役立ちます。ワークフロー・サービスとの直接の相互作用はありません。システムは、ユーザーにかわってログインし、ユーザーのコンテキストを取得できます。
注意: この機能は、システム操作に対してのみ使用することをお薦めします。これは、管理ユーザー・コンテキストを作成して、ユーザーのかわりに作成したヒューマン・ワークフロー・コンテキストを問い合せる必要があるためです。かわりにアイデンティティ伝播を使用すると、ユーザーはすでに認証されているため、クライアントはすでに認証されているそのユーザーのIWorkflowContext を取得できます。詳細は、第32.1.2.3項「JAASアプリケーションによって以前に認証されたユーザーのワークフロー・コンテキストの取得」を参照してください。 |
例32-2では、ユーザーjcooper
のヒューマン・ワークフロー・コンテキストを作成します。
クライアントでJAASアプリケーションによって以前に認証されたユーザーのワークフロー・コンテキストを取得する場合は、例32-3に示すアイデンティティ伝播を使用できます。
例32-3 アイデンティティ伝播
public IWorkflowContext getWorkflowContextForAuthenticatedUser() throws WorkflowException;
クライアントで適切なクライアント・タイプ用にアイデンティティ伝播が構成されている場合は、このAPIによって認証済のユーザーのワークフロー・コンテキストが返されます。クライアント・タイプがリモートの場合は、このメソッドでEnterprise JavaBeansアイデンティティ伝播が使用されます。クライアント・タイプがSOAPの場合は、このメソッドでSAMLトークン伝播が使用されます。
タスク・サービスにより、タスクに対するアクションを実行するための操作が公開されます。表32-4に、タスク・サービスの操作を示します。パッケージoracle.bpel.services.workflow.task
は、タスク・サービスに対応しています。
表32-4 タスク・サービスのメソッド
メソッド | 説明 |
---|---|
|
タスクを獲得します。 |
|
一連のタスクを獲得します。 |
|
タスクに添付ファイルを追加します。 |
|
タスクにコメントを追加します。 |
|
To Doタスクを作成します。 |
|
タスクを別のユーザーに委任します。現在の割当て先とタスク委任先ユーザーの両方が、タスクを表示して操作できます。 |
|
タスクのリストを別のユーザーに委任します。現在の割当て先とタスクのリスト委任先ユーザーの両方が、タスクを表示して操作できます。 |
|
タスクの論理削除を実行します。データベース上にはタスクはまだ存在します。 |
|
タスクのリストの論理削除を実行します。データベース上にはタスクはまだ存在します。 |
|
タスクをエラーにします。通常、この操作はエラー割当て先が使用します。 |
|
タスクをエスカレートします。デフォルトでは、現行のユーザーのマネージャにエスカレートします。これはエスカレーション関数を使用して上書きできます。 |
|
複数のタスクをまとめてエスカレートします。デフォルトでは、現行のユーザーのマネージャにエスカレートします。これはエスカレーション関数を使用して上書きできます。 |
|
タスクの前の承認者を取得します。 |
|
タスクの今後の参加者を取得します。今後の参加者は、単純参加者を含むルーティング・スリップ形式で返されます(ルーティング・スリップを含む参加者ノードとパラレル・ノード)。 |
|
情報リクエストのリクエストが可能なユーザーを取得します。 |
|
タスクを開始します。 |
|
タスクをマージおよび更新します。この操作を使用するのは、部分タスクに更新が必要な場合です。部分タスクとは、一部のタスク属性が存在しないタスクです。この部分タスクでは、次のタスク属性のみが解析されます。
|
|
タスク・インスタンスのルーティング・スリップを新規ルーティング・スリップで上書きします。現行のタスク割当てはNULLになり、タスクの開始時には新規ルーティング・スリップが解析されます。 |
|
永続ストアからタスクを削除します。 |
|
永続ストアからタスクのリストを削除します。 |
|
タスクを前の承認者または当初の割当て先にプッシュバックします。当初の割当て先は、タスクの再割当てやエスカレートを実行している可能性があるため、承認者でなくてもかまいません。タスクが当初の割当て先にプッシュバックされるか、承認者にプッシュバックされるかは、Oracle Enterprise Manager Fusion Middleware Controlコンソールの「システムMBeanブラウザ」のプロパティ「PushbackAssignee」によって制御されます。
|
|
タスクを再割当てします。 |
|
複数のタスクをまとめて再割当てします。 |
|
タスクを再開します。タスクを再開すると、前に完了したタスクが持ち越されるため、履歴、コメントおよび添付ファイルも新規タスクに持ち越されます。 |
|
前に獲得したタスクをリリースします。 |
|
前に獲得した一連のタスクをリリースします。 |
|
タスクの添付ファイルを削除します。 |
|
タスクの期限を更新して有効期間を延長します。 |
|
タスク情報をリクエストします。 |
|
再承認を伴うタスク情報をリクエストします。たとえば、 |
|
タスクを再開します。ワークフローの保留を解除するために、タスク所有者(または |
|
一連のタスクを再開します。 |
|
タスクを、レビューする必要のある次のユーザーに非定型の形式でルーティングできるようにします。ユーザーは、タスクをシリアル、パラレルまたは単一割当てでルーティングするように指定できます。タスクをルーティングできるのは、ヒューマン・ワークフローでタスクの非定型ルーティングが許可されている場合のみです。 |
|
現在の割当てをスキップして次の割当てに移動するか、他に割当て先が存在しない場合は、直前の承認者が設定した結果を使用します。 |
|
タスク情報を発行します。通常、このアクションは、必要なタスク更新を実行した後、または追加情報を含むコメントや添付ファイルを追加した後に実行します。 |
|
タスク所有者(または |
|
一連のタスクを一時停止します。 |
|
一連のタスクの結果を更新します。 |
|
タスクを更新します。 |
|
タスクの結果を更新します。 |
|
タスクの結果を更新してタスクをルーティングします。タスクをルーティングすると、ユーザーはそのタスクを、レビューする必要のある次のユーザーに非定型の形式でルーティングできます。ユーザーは、タスクをシリアル、パラレルまたは単一割当てでルーティングするように指定できます。タスクをルーティングできるのは、ヒューマン・ワークフローでタスクの非定型ルーティングが許可されている場合のみです。 |
|
タスク作成者は、ヒューマン・ワークフローを介してタスクを送る必要がなくなった場合、保留中のタスクを取り消すことができます。タスク所有者も、作成者のかわりにタスクを取り消すことができます。タスクが取り消されると、ビジネス・プロセスは、タスクの状態属性が |
|
一連のタスクを取り消します。 |
詳細は、次を参照してください。
Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンス
いくつかのAPIの例を示すサンプルのworkflow-118-JavaSamples
タスク問合せサービスでは、様々な検索基準(キーワード、カテゴリ、ステータス、ビジネス・プロセス、属性値、タスクの履歴情報など)に基づいてタスクを問い合せます。表32-5に、SOAPを介したサービスの使用方法など、タスク問合せサービスの操作を示します。パッケージoracle.bpel.services.workflow.query
は、タスク問合せサービスに対応しています。
表32-5 タスク問合せサービスのメソッド
メソッド | 説明 |
---|---|
|
アイデンティティ認証サービスでユーザーを認証し、有効な |
|
必要に応じ、他のユーザーにかわって認証を行います。 |
|
指定した問合せ基準に一致するタスクの数をカウントします。 |
|
指定したビューの問合せ基準に一致するタスクの数をカウントします。 |
|
事前認証済のHTTPリクエストから有効な |
|
指定した問合せ基準に一致する既存タスクがあるかどうかを確認します。 |
|
指定したビューの問合せ基準に一致するタスクが存在するかどうかを確認します。 |
|
指定のコンテキスト・トークンを使用してヒューマン・ワークフロー・コンテキストを取得します。 |
|
不要になったヒューマン・ワークフロー・コンテキストをクリーン・アップします。通常、このメソッドはユーザーのログアウト時に使用されます。 |
|
タスクの |
|
タスクの |
|
指定タスクIDのタスク・バージョンのリストを取得します。 |
|
タイプが順序のタスクについて、IDがタスクIDのタスクのタスク順序ツリーを取得します。 |
|
指定のタスクIDとバージョン番号について、特定のタスク・バージョン詳細を取得します。 |
|
JAASアプリケーションによって認証されたユーザーの |
|
指定した問合せを実行し、問合せで返されたタスクの数を、指定した列ごとにグループ化して集計します。 |
|
指定の述語に一致するタスク・エラー・オブジェクトのリストを返します。 |
|
指定のフィルタ条件に一致するタスクのリストを返します。タスクは、指定の順序付け条件(存在する場合)に従ってリストされます。基準に一致するタスクのリスト全体を返すか、クライアントがページング問合せを実行できます。その場合は、リストのうち指定した数のタスクのみが取得されます。フィルタ条件は次のとおりです。
|
|
指定したビューに定義されているように問合せを実行し、そのビューに定義されているチャート・プロパティに従って選択したタスクを集計します。 |
|
指定のビューの基準に従ってタスクのリストが返されます。タスク・リストの全体またはページを返すことができます。クライアントは、ビューのコンテンツに対してフィルタと順序付け基準を追加指定できます。 |
詳細は、次を参照してください。
ドキュメント・ライブラリのOracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンス
いくつかのAPIの例を示すサンプルのworkflow-118-JavaSamples
アイデンティティ・サービスは、Oracle WebLogic Serverのセキュリティ・インフラストラクチャ(Oracle Identity ManagementおよびOracle Platform Security Services(OPSS))または任意のカスタム・ユーザー・リポジトリの上部に位置するWebサービスのシン・レイヤーです。アイデンティティ・サービスにより、ユーザーの認証、ユーザー・プロパティ、ロール、グループ・メンバーシップおよび権限のルックアップが可能になります。Oracle WebLogic Serverでは、Oracle Identity Managementが唯一のアイデンティティ・サービス・プロバイダです。Oracle Identity Managementは、XML、LDAPなど様々なリポジトリに対するユーザーとロールの保管と取得をすべて処理します。Oracle Identity Managementには、具体的に次の機能が用意されています。
すべてのプロバイダは、Oracle Identity Managementを通してサポートされます。OracleAS JAAS Provider(JAZN)とLDAPのプロバイダはサポートされていません。カスタム・プロバイダは非推奨で、下位互換性のためにのみサポートされます。Oracle Identity Managementでは、カスタム・プロバイダを経由するか、LDAPプロバイダとしてOracle Virtual Directory(OVD)を構成して(あるいはその両方)、プロバイダのすべてのカスタマイズが実行されます。OVDはデータを様々なリポジトリ全体にわたって集約します。
次の内容を含むOPSSレイヤーが使用されます。
アイデンティティ・ストア
ポリシー・ストア
資格証明ストア
フレームワーク
詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。すべてのセキュリティ構成は、jps-config.xml
ファイルを使用して行われます。
以前のリリースの動作と異なり、すべての権限がパーミッションと照合して検証されます。
次の一連のアプリケーション・ロールが定義されています。これらのロールはOPSSポリシー・ストアのSOAインフラストラクチャ・アプリケーションに自動的に定義されます。
SOAAdmin
: どのSOAモジュールにも管理操作を実行する必要があるユーザーにこのロールを付与します。このロールには、BPMWorkflowAdmin
およびB2BAdmin
ロールも付与されます。
BPMWorkflowAdmin
: どのワークフローにも管理操作を実行する必要があるユーザーにこのロールを付与します。この管理操作には、システム内の任意のタスクに対する検索および操作、ユーザーまたはグループのルール作成および変更、アプリケーションのカスタマイズ実行などの操作が含まれます。このロールには、BPMWorkflowCustomize
ロールと次の権限が付与されます。
workflow.mapping.protectedFlexField
workflow.admin.evidenceStore
workflow.admin
BPMWorkflowCustomize
: このロールは、パブリック・マップ済属性へのマップ済属性(以前のフレックス・フィールド)マッピングを実行する必要があるビジネス・ユーザーに付与します。このロールには、workflow.mapping.publicFlexField
権限も付与されます。
次のワークフロー権限が定義されます。
workflow.admin
: タスク、ユーザーとグループのルールおよびカスタマイズに関連する管理操作を実行できるユーザーを制御します。
workflow.admin.evidenceStore
: デジタル署名されたタスク(デジタル証明書を使用した署名が必要なタスク)に関連するエビデンス記録を表示および検索できるユーザーを制御します。
workflow.mapping.publicFlexField
: パブリック・マップ済属性にタスク・ペイロード属性のマッピングを実行できるユーザーを制御します。
workflow.mapping.protectedFlexField
: 保護されたマップ済属性にタスク・ペイロード属性のマッピングを実行できるユーザーを制御します。
注意: Oracle SOA Suiteに対して、複数の認証プロバイダを指定することはできません。これは、OPSSが複数のプロバイダをサポートしていないためです。ヒューマン・ワークフロー認証に使用するプロバイダは、Oracle SOA Suiteの認証プロバイダの順序を示したリスト内で最初のプロバイダである必要があります。 |
詳細は、次を参照してください。
OPSSの詳細は『Oracle Fusion Middlewareセキュリティ・ガイド』
Oracle Identity Managementの詳細は『Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド』
OVDの詳細は『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』
図32-1に示すように、Oracle Identity Managementはリリース11g でサポートされている唯一のプロバイダです。
リリース11g以降、アイデンティティ・サービスでカスタム・プロバイダ・プラグインはサポートされていません。アイデンティティのカスタマイズは、すべてアイデンティティ・ストアで実行されるようになりました。Oracle Fusion Middlewareは、ユーザーとロールのAPIを有効化してカスタム・アイデンティティ・ストアと対話するプロバイダをサポートします。詳細は、次のURLを参照してください。
http://www.oracle.com/technology/products/id_mgmt/opss/index.html
タスク・メタデータ・サービスにより、タスク関連のメタデータ情報を取得するための操作が公開されます。表32-6に、これらのメソッドを示します。パッケージoracle.bpel.services.workflow.metadata
は、タスク・メタデータ・サービスに対応しています。
表32-6 タスク・メタデータ・サービスのメソッド
メソッド | 説明 |
---|---|
|
指定のタスク定義ネームスペースとコンポジット・バージョンを使用して、ヒューマン・タスク・サービス・コンポーネントが記述された |
|
タスクについて許可されている結果を取得します。結果とその表示値が返されます。 |
|
タスクのリソース・バンドル情報を取得します。リソース・バンドル情報には、バンドルの位置と名前が含まれます。 |
|
特定のタスクに対する制限付きアクションを取得します。 |
|
標準タスク属性と、指定したタスク定義に共通のマップ済属性列が記述された |
|
標準タスク属性と、指定したネームスペースで識別されたタスク定義に共通のマップ済属性列が記述された |
|
タスク・メッセージ属性を取得します。 |
|
特定のタスク定義のメッセージ属性を取得します。 |
|
タスクに関連するタスク定義を取得します。 |
|
タスク定義IDによるタスク定義を取得します。 |
|
特定のタスク定義IDの結果を取得します。 |
|
タスクのタスク表示を取得します。 |
|
タスク表示ルールを取得します。 |
|
タスクのタスク表示リージョンを取得します。 |
|
変更された場合にタスク・バージョンが作成されるタスク属性を取得します。 |
|
システム内のタスク定義をリストします。 |
詳細は、Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンスを参照してください。
ユーザー・メタデータ・サービスは、個々のユーザーおよびグループに固有のメタデータを管理するためのメソッドを提供します。これは、ユーザー・ワークリストのプリファレンスの取得と設定、ユーザーのカスタム・ビューの管理、およびユーザーとグループに対するヒューマン・ワークフロー・ルールの管理に使用されます。
ユーザー・メタデータ・サービスのほとんどのメソッドの場合、認証済ユーザーは独自のユーザー・メタデータを問い合せて更新できます。ただし、他のユーザーに属するメタデータは更新できません。
グループ・メタデータ(グループに対するヒューマン・ワークフロー・ルールなど)の場合、グループのメタデータを問い合せて更新できるのは、そのグループの所有者として指定されているユーザー(またはworkflow.admin
権限ユーザー)のみです。ただし、workflow.admin
権限があるユーザーは、任意のユーザーまたはグループのメタデータに対して問合せおよび更新を実行できます。
表32-7に、ユーザー・メタデータ・サービスのメソッドを示します。パッケージoracle.bpel.services.workflow.user
は、ユーザー・メタデータ・サービスに対応しています。
表32-7 ユーザー・メタデータ・サービスのメソッド
メソッド | 説明 |
---|---|
|
新規ルールを作成します。 |
|
ルールの優先度を1つ低くします。このルールが最低優先度の場合、このメソッドでは何も実行されません。 |
|
ルールを削除します。 |
|
ユーザーに対してタスクを割り当てることができない日付の範囲(設定されている場合)を取得します。 |
|
特定のヒューマン・ワークフロー・ルールの詳細を取得します。 |
|
特定のユーザーまたはグループに対するルールのリストを取得します。 |
|
既存のルールを更新します。 |
|
ルールの優先度を1つ高くします。ユーザーまたはグループに対するルールは、優先度の順序付きリストで保守されます。高優先度のルール(リストの先頭に近いルール)は、低優先度のルールよりも先に実行されます。このルールが最高優先度の場合、このメソッドでは何も実行されません。 |
|
ユーザーが所有するユーザー・タスク・ビューのリストを取得します。 |
|
ユーザーに他のユーザーから権限付与されたユーザー・タスク・ビューのリストを取得します。ユーザーは付与されたビューを使用してタスクのリストを問合せできますが、ビュー定義は更新できません。 |
|
ヒューマン・ワークフロー・サービスに付属している標準タスク・ビューのリストを取得します。このビューはすべてのユーザーが使用できます。 |
|
単一ビューの詳細を取得します。 |
|
新規のユーザー・タスク・ビューを作成します。 |
|
既存のユーザー・タスク・ビューを更新します。 |
|
ユーザー・タスク・ビューを削除します。 |
|
このユーザーに対する他のユーザーからのビュー権限付与の詳細を更新します。更新は、ビュー権限付与の非表示または非表示解除(非表示にしたビューは、Oracle BPM Worklistのメイン受信ボックス・ページに表示されません)、および権限を付与されたユーザーに表示されるビュー名および説明の変更に制限されています。 |
|
ユーザーのユーザー・プリファレンスのリストを取得します。ユーザー・プリファレンスは、単純な名前/値ペアの文字列です。ユーザー・プリファレンスはユーザーごとにプライベートです(ただし、 |
|
ユーザーのユーザー・プリファレンス値を設定します。前に格納されていて新規のユーザー・プリファレンス・リストに含まれていないプリファレンスは削除されます。 |
|
ユーザーのパブリック・プリファレンスのリストを取得します。パブリック・プリファレンスは、ユーザー・プリファレンスに類似していますが、すべてのユーザーが問合せできます。ただし、パブリック・プリファレンスを更新できるのは、そのプリファレンスを所有しているユーザー、または |
|
ユーザーのパブリック・プリファレンスを設定します。 |
|
ユーザーに対してタスクを割り当てることができない日付の範囲を設定します (Dynamic Assignment Functionでは、休暇中のユーザーにタスクが割り当てられることはありません)。 |
|
|
詳細は、次を参照してください。
ルール構成ページとユーザー・プリファレンス・ページの詳細は第30章「Oracle BPM Worklistの使用」
いくつかのAPIの例を示すサンプルのworkflow-118-JavaSamples
Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンス
タスク・レポート・サービスは、レポートを実行してその結果を受け取ります。表32-8に、その方法を示します。パッケージoracle.bpel.services.workflow.report
は、タスク・レポート・サービスに対応しています。表32-8に示す標準レポートは、インストールに含まれています。
表32-8 タスク・レポート・サービス
レポート | 説明 |
---|---|
不参加タスク・レポート |
このレポートでは、ユーザーのグループまたは報告先のグループに割り当てられたタスクの中で、まだ獲得されていないために注意が必要なタスクが分析されます。 |
タスクの優先度レポート |
このレポートでは、ユーザー、報告先またはそのグループに割り当てられたタスクの数が優先度別に分析されます。 |
タスクのサイクル・タイム・レポート |
このレポートでは、ユーザーのグループまたは報告先のグループに基づいて、タスクの割当てから完了までの所要時間が分析されます。 |
タスクの生産性レポート |
このレポートでは、ユーザー、報告先またはそのグループについて、特定期間中に割り当てられたタスク数と完了したタスク数が分析されます。 |
タスク時間分布レポート |
このレポートでは、特定期間中に、特定のユーザー、ユーザーのグループまたは報告先がタスクを完了するのに要した時間が分析されます。 |
ランタイム構成サービスは、タスク・サービスのランタイム環境で使用されるメタデータの管理メソッドを提供します。これは、主にタスク・ペイロード・マップ済属性マッピングとタスク詳細の表示に使用するURIの管理をサポートします。
タスク・サービスで使用されるタスク・オブジェクトには、多数のマップ済属性が含まれており、タスク・ペイロードからの情報を移入できます。これにより、タスク・ペイロード情報を問い合せ、タスク・リストに表示し、ヒューマン・ワークフロー・ルールに使用できます。
ランタイム構成サービスは、クライアント・アプリケーションにある特定タスク定義のインスタンスのタスク詳細を表示するURIの問合せおよび更新メソッドを提供します。どのようなタスク定義でも、複数URI表示がサポートされ、異なるURIは異なるアプリケーションに対して使用されます。メソッドgetTaskDisplayInfo
により、特定のタスク定義のURIを問い合せることができます。メソッドsetTaskDisplayInfo
により、新規のURIを定義したり、既存のURIを更新することができます。setTaskDisplayInfo
をコールできるのは、workflow.admin
権限があるユーザーのみですが、getTaskDisplayInfo
は認証されたユーザーがコールできます。
ランタイム構成サービスを使用すると、管理者は単純なタスク・ペイロード属性とこれらのマップ済属性間のマッピングを作成できます。
パブリック・マップ済属性のペイロード・マッピングを更新できるのは、workflow.mapping.publicFlexField
またはworkflow.mapping.protectedFlexField
権限があるユーザーのみです。保護されたマップ済属性のペイロード・マッピングを更新できるのは、workflow.mapping.protectedFlexField
権限があるユーザーのみです。いずれの認証済ユーザーも、このサービスの問合せメソッドを使用できます。
管理者は、各種マップ済属性を表す属性ラベルを作成できます。これらの属性ラベルは、属性にわかりやすいラベルを提供します(たとえば、マップ済属性TextAttribute1
を表すラベルLocation
を作成できます)。特定のマップ済属性に複数のラベルを関連付けることができます。ユーザーがOracle BPM Worklistで特定のタスクの属性リストを表示すると、この属性ラベルが表示されます。特定のタスク・タイプの属性ラベルは、タスク・メタデータ・サービスのgetTaskAttributesForTaskDefinition
メソッドをコールして決定できます。
属性ラベルを定義する際は、サービスによって次のフィールドに値が自動的に移入されます。これらの属性の値を属性ラベルの作成時または更新時に指定する必要はありません。
Id
CreatedDate
WorkflowType
Active
パブリック・マップ済属性のタスク属性フィールドの有効値は、次のとおりです。
TextAttribute1
からTextAttribute
20
まで
FormAttribute1
からFormAttribute10
まで
UrlAttribute1
からUrlAttribute10
まで
DateAttribute1
からDateAttribute10
まで
NumberAttribute1
からNumberAttribute10
まで
その後、タスク・ペイロード・フィールドと属性ラベルとのマッピングを作成できます。たとえば、ペイロード・フィールドcustomerLocation
を属性ラベルLocation
にマップできます。様々なタスク・タイプで同じ属性ラベルを共有できます。これにより、同じ意味を持つ異なるタスク・タイプのペイロード属性を同じ属性ラベルにマップできます。
注意: マップできるのは、単純XMLタイプのペイロード・フィールドのみです。 |
ランタイム構成サービスでは、次のメソッドも提供されます。
サーバーでサポートされているDynamic Assignment Functionを問い合せるためのメソッド
Oracle BPM Worklistおよび他のアプリケーションでのタスク詳細の表示に使用するタスク表示URLを管理するためのメソッド
サーバーのHTTPおよびJNDI URLを取得するためのメソッド
表32-9に、ランタイム構成サービスのメソッドを示します。パッケージoracle.bpel.services.workflow.runtimeconfig
は、ランタイム構成サービスに対応しています。
表32-9 ランタイム構成サービス
メソッド | 説明 |
---|---|
|
特定のタスク・マップ済属性を表す新規の属性ラベルを作成します。 |
|
属性ラベルとタスク・ペイロード・フィールド間の新規マッピングを作成します。 |
|
既存の属性ラベルを削除します。 |
|
既存のペイロード・マッピングを削除します。 |
|
ラベルが現在使用されているマッピング(存在する場合)の属性ラベル(すべての属性ラベル、または特定のタイプの属性ラベル)のリストを取得します。 |
|
このサーバーに実装されているグループを選択できるDynamic Assignment Functionのリストを返します。 |
|
具体的なタスク定義のタスク・インスタンス表示に使用されるURIに関連する情報を取得します。 |
|
特定のタスク定義やコンポジット・インスタンスに対応するタスク・インスタンスのステータスを取得します。 |
|
このサーバーに実装されているユーザーを選択できるDynamic Assignment Functionのリストを返します。 |
|
特定のヒューマン・ワークフロー定義に関するすべてのマップ済属性マッピングのリストを取得します。 |
|
具体的なタスク定義のタスク・インスタンス表示に使用されるURIに関連する情報を設定します。 |
|
既存の属性ラベルを更新します。 |
詳細は、次を参照してください。
追加の詳細は第32.3.1項「Dynamic Assignment Functionおよびタスク・エスカレーション関数」
マップ済属性マッピングの詳細は第30章「Oracle BPM Worklistの使用」
いくつかのAPIの例を示すサンプルのworkflow-118-JavaSamples
Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンス
属性ラベルは、タスク・マップ済属性にわかりやすいラベルを添付するメソッドを提供します。ユーザーのロケールに適した言語に翻訳された属性ラベルを表示することが望ましい場合があります。
カスタム・リソース・バンドルを使用するには、ワークフロー構成パラメータworkflowCustomClasspathURL
で識別される場所(ファイルまたはHTTPパス)にリソース・バンドルを配置します。
これは、Oracle Enterprise Manager Fusion Middleware Controlコンソールの次のいずれかの場所で設定できます。
「システムMBeanブラウザ」ページ
「ワークフロー・タスク・サービス・プロパティ」ページ
このパラメータを使用する方法の詳細は、サンプルのworkflow-110-workflowCustomizationsを参照してください。詳細は、次のURLを参照してください。
https://soasamples.samplecode.oracle.com/
マップ済属性ラベルのエントリには、次の書式を使用する必要があります。
FLEX_LABEL.[label name]=Label Display Name
たとえば、Location
というラベルのエントリは次のようになります。
FLEX_LABEL.Location=Location
これらのファイルに属性ラベルのエントリを追加するかどうかはオプションであることに注意してください。ファイルにエントリが存在しない場合は、APIを使用して指定した属性ラベルの名前がかわりに使用されます。
エビデンス・ストア・サービスは、デジタル署名の保管とデジタル署名されたヒューマン・ワークフローの否認防止に使用します。デジタル署名は、メッセージ送信者や文書署名者のアイデンティティを認証する電子署名です。これにより、送られたメッセージや文書の元の内容が変更されていないことが保証されます。デジタル署名は転送可能で、他人に模倣されることがなく、自動的にタイムスタンプが付けられます。署名されたオリジナルのメッセージが届いたことを証明できるため、送信者が後で否認することはできません。デジタル署名は、ヒューマン・ワークフロー・ドキュメントが次の状態であることを保証します。
認証済であること
他のエンティティで捏造されていないこと
変更されていないこと
送信者が否認できないこと
暗号ベースのデジタル署名は、公開鍵のアルゴリズムによって送信者の秘密鍵付のメッセージが署名されたときに作成されます。
設計時、タスクに対して署名は有効です。Oracle BPM Worklistの実行時には、ユーザーがタスクを承認または却下すると、Webブラウザでは次の動作が発生します。
署名に使用する秘密鍵の選択をユーザーに要求します。
秘密鍵とOracle BPM Worklistから提供されたタスク・コンテンツを使用してデジタル署名を生成します。
図32-2に例を示します。
注意:
|
次のデジタル署名の機能をサポートします。
X.509証明書によるPKCS7署名
ブラウザベースの、添付ファイルなしデジタル署名付コンテンツ
デジタル署名と証明書を使用するための前提条件は、次のとおりです。
Oracle BPM Worklistのユーザーは、証明書を持っている必要があります。
管理者は、証明書を信頼する必要があるCA、および対応するCRL URLを指定する必要があります。ユーザーは、これらのCAが発行した証明書のみをアップロードする必要があります。そのためには、Oracle Enterprise Manager Fusion Middleware Controlコンソールの「システムMBeanブラウザ」を編集します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールにログインします。
ナビゲータで、「SOA」フォルダを開きます。
「soa-infra」を右クリックし、「管理」→「システムMBeanブラウザ」の順に選択します。
ページの右側に「システムMBeanブラウザ」が表示されます。
「アプリケーション定義のMBean」→「oracle.as.soainfra.config」→「サーバー: server_name」→「WorkflowConfig」→「human-workflow」の順に開きます。
ページの右側にある「操作」タブをクリックします。
「addTrustedCA」をクリックします。
「caName」と「caURL」に値を指定します。これは、信頼するチェーンの各証明書に対して実行する必要があります。たとえば、表32-10に示すように、各起動に対して値を指定します。
表32-10 caNameとcaURLの値
caName | caURL |
---|---|
|
|
|
|
|
|
「起動」をクリックします。
表32-11から表32-14では、エビデンス・ストア・サービスのメソッドについて説明します。パッケージoracle.bpel.services.security.evidence
は、エビデンス・サービスに対応しています。
表32-11 ITaskEvidenceServiceインタフェース
メソッド | 説明 |
---|---|
|
エビデンスを作成し、否認防止のためにリポジトリに保管します。 |
|
特定の条件に一致するエビデンスのリストを取得します。結果は、サービスを問い合せるユーザーに関連付けられている権限によって異なります。ユーザーに |
|
後で署名検証に使用する証明書をアップロードします。これが、特定の証明書を使用してエビデンスを作成するための前提条件です。ユーザーがアップロードできるのは、自分の証明書のみです。 |
|
ステータスのCRL検証部分を更新します。これには、検証時間、ステータス、エラー・メッセージ(ある場合)が含まれます。 |
|
エビデンス署名を検証します。基本的にエビデンスの否認防止チェックを実行します。署名が検証されると、 |
表32-12 Evidenceインタフェース
メソッド | 説明 |
---|---|
|
このエビデンスの署名に使用する証明書を取得します。 |
|
エビデンスの作成日付を取得します。 |
|
CRL検証に関連するエラー・メッセージを取得します。 |
|
エビデンスに関連する一意の識別子を取得します。 |
|
このエビデンスの一部として署名されたコンテンツを取得します。 |
|
エビデンスの署名ポリシーを取得します。 |
|
エビデンスの署名を取得します。 |
|
署名が作成された日付を取得します。 |
|
CRL検証ステータスを取得します。次のいずれかです。
|
|
このエビデンスが関連付けられているタスクの一意の識別子を取得します。 |
|
このエビデンスが関連付けられているタスクのタスク番号を取得します。 |
|
このエビデンスが関連付けられているタスクのタスク優先度を取得します。 |
|
このエビデンスが関連付けられているタスクのタスク・ステータスを取得します。 |
|
このエビデンスが関連付けられているタスクのタスク・サブステータスを取得します。 |
|
このエビデンスが関連付けられているタスクのタイトルを取得します。 |
|
このエビデンスが関連付けられているタスクのバージョンを取得します。 |
|
使用した証明書のCRL検証が実行された日付を取得します。 |
|
このエビデンスが関連付けられているタスクのワークフロー・タイプを取得します。通常は |
表32-13 Certificateインタフェース
メソッド | 説明 |
---|---|
|
証明書発行者の識別名(DN)を取得します。 |
|
インタフェースによって抽象化された証明書オブジェクトを取得します。 |
|
証明書のシリアル・ナンバーを取得します。 |
|
この証明書をアップロードするユーザーに関連付けられているアイデンティティ・コンテキストを取得します。 |
|
この証明書に関連付けられているユーザーの名前を取得します。 |
|
証明書がまだ有効であれば、 |
表32-14 Policy TypeとWorkflow Typeインタフェース
メソッド | 説明 |
---|---|
|
文字列表現からオブジェクトを構成します。 |
|
このオブジェクトの文字列表現を返します。 |
詳細は、次を参照してください。
ヒューマン・タスク・エディタでデジタル署名およびデジタル証明書を指定する方法の詳細は第28.3.12項「ワークフロー・デジタル署名ポリシーの指定方法」
Oracle BPM Worklistのタスク・アクションへのデジタル署名の詳細は第29章「ヒューマン・タスク用のタスク・フォームの設計」
タスクは、ユーザーによる実行が必要な作業です。タスクを作成する場合は、そのタスクに参加して操作するユーザーを割り当てます。表32-15に、アプリケーションでよく使用され、解析されるタスク属性を示します。
表32-15 タスク属性
タスク属性名 | 説明 |
---|---|
|
タスクに関連付けられたアプリケーション・ロール(割当て先、所有者など)が属するアプリケーション。 |
|
(オプション)タスクのカテゴリ。 |
|
タスクの作成者の名前。 |
|
タスクの期日。これはTo Doタスクで使用されます。 |
|
(オプション)タスクに対するカスタムの一意識別子。これは、標準のタスクIDとタスク番号に対する追加の一意識別子として設定できます。このキーを使用すると、タスクが作成されたビジネス・オブジェクトの識別子に基づいて、タスクを取得できます。 |
|
ユーザーおよびグループがシードされているアイデンティティ・レルム。単一レルム環境では、デフォルトのレルムがデフォルト値になります。 |
|
タスク・インスタンスを所有するグループ(ある場合)。タスク所有者は、アプリケーション・ロール、ユーザーまたはグループです。タスクの所有者がグループの場合は、このフィールドが設定されます。 |
|
タスク・インスタンスを所有しているアプリケーション・ロール(ある場合)。タスク所有者は、アプリケーション・ロール、ユーザーまたはグループです。タスクの所有者がアプリケーション・ロールの場合は、このフィールドが設定されます。 |
|
タスク・インスタンスを所有するユーザー(ある場合)。タスク所有者は、アプリケーション・ロール、ユーザーまたはグループです。タスクの所有者がユーザーの場合は、このフィールドが設定されます。 |
|
XMLとして取得されるタスク・ペイロード。 |
|
タスクの完了パーセンテージ。これはTo Doタスクで使用されます。 |
|
タスクの優先度を定義する整数。数値が低いほど優先度が高くなります。通常は、 |
|
タスクの開始日。これはTo Doタスクで使用されます。 |
|
(オプション)タスクのサブカテゴリ。 |
|
タスクをタスク・メタデータにバインドするタスク定義ID。タスクの開始時は、 |
|
タスク詳細の表示に使用するURL。 |
|
タスクのタイトル。 |
表32-16に、プロセス・メタデータ情報を取得する属性を示します。
表32-16 プロセス・メタデータ情報を取得する属性
属性 | 説明 |
---|---|
|
タスク・インスタンスを定義するタスク・コンポーネントを含むコンポジットが属するドメイン。 |
|
デプロイされるアプリケーション。 |
|
タスク・インスタンスを定義するタスク・コンポーネントの名前。 |
|
タスク・インスタンスを定義するタスク・コンポーネントを含むコンポジットの特定のデプロイメントの一意名。 |
|
コンポジット・インスタンスID。 |
|
タスク・インスタンスを定義するタスク・コンポーネントを含むコンポジットの名前。 |
|
タスク・インスタンスを定義するタスク・コンポーネントを含むコンポジットのバージョン。 |
表32-17に、添付ファイル関連の属性を示します。
表32-17 添付ファイル関連の属性
属性 | 説明 |
---|---|
|
添付ファイルのコンテンツ。 |
|
添付ファイルのMultipurpose Internet Mail Extension(MIME)タイプ。 |
|
添付ファイルの名前。 |
|
添付ファイルを更新したユーザー。 |
|
添付ファイルの更新日付。 |
|
URI(添付ファイルがURIベースの場合)。 |
表32-18に、コメント関連の属性を示します。
表32-18 コメント関連の属性
属性 | 説明 |
---|---|
|
ユーザーのコメント。 |
|
コメントを追加したユーザー。 |
|
コメントが追加された日付。 |
表32-19に、ワークフロー・サービス・システムで操作される属性を示します。
表32-19 ワークフロー・サービス・システムで操作される属性
属性 | 説明 |
---|---|
|
グループ、アプリケーション・ロールまたは複数のユーザーに割り当てられたタスクが、ユーザーによって申告された場合、このフィールドはタスクを申告したユーザーの名前に設定されます。 |
|
タスクに対してカスタム・アクションを実行したユーザーのID。 |
|
このタスクが割り当てられた日付。 |
|
現在のタスク割当て先(ユーザー、グループまたはアプリケーション・ロール)。 |
|
タスク・インスタンスが作成された日付。 |
|
タスクに対して実行できるカスタム・アクション。 |
|
タスクの終了日。これはTo Doタスクで使用されます。 |
|
タスク・インスタンスの有効期限の日付。 |
|
タスクを前に操作したユーザー。 |
|
|
|
|
|
ユーザーが別のユーザーにタスクを委任している場合、このフィールドには、タスクを委任したユーザーの名前が移入されます。 |
|
タスクの結果(承認済、却下済など)。このフィールドは、完了したタスク・インスタンスにのみ設定されます。 |
|
これは、再開されたタスクにのみ設定されます(再開される前のタスクのタスクID)。 |
|
これは、サブタスクにのみ設定されます。親タスクのバージョンを参照します。 |
|
Oracle JDeveloperからモデリングされた参加者の論理名。 |
|
タスクのレビューア。これは、ユーザー、グループまたはアプリケーション・ロールです。 |
|
ルート・タスクのID。これは、ルート・タスクのタスクIDと同じです。 |
|
実行中のステージ名。 |
|
タスク・インスタンスの現在の状態。 |
|
タスクの現在のサブ状態。 |
|
サブタスクに設定されている一意のID。これと同じIDが親タスクの |
|
タスクに対して実行できるシステム・アクション(再割当て、エスカレートなど)。 |
|
タスク・インスタンスを定義するタスク・コンポーネントの名前。 |
|
直接の親タスクのID。サブタスクのみが設定されます。 |
|
親タスクに設定される一意のID。これと同じIDがサブタスクの |
|
タスクの一意のID。 |
|
このタスク・インスタンスを定義するタスク・コンポーネントの全バージョンを一意に定義するネームスペース。同じタスク・コンポーネントの異なるバージョンに同じネームスペースを指定することは可能ですが、異なる2つのタスク・コンポーネントに同じネームスペースを指定することはできません。 |
|
タスク・インスタンスを一意に識別する整数。 |
|
タスクを最後に更新したユーザー。 |
|
このインスタンスが最後に更新された日付。 |
|
タスクのバージョン。 |
|
バージョンが作成された理由。 |
|
実行されるパターン(パラレル、シリアル、FYI、単一など)。 |
表32-20にマップ済属性を示します。
通知は、タスクの状態が変化したことをユーザーに警告するために送信されます。通知は、電子メール、電話ボイス・メッセージ、インスタント・メッセージ(IM)、ショート・メッセージ・サービス(SMS)のいずれかのチャネルを通じて送信できます。通知はBPELプロセスのヒューマン・タスクから、または直接BPELプロセスから送信できます。
11g 以前のリリースでは、電子メール通知はヒューマン・ワークフロー電子メール通知レイヤーを通じて送信されていました。ボイスまたはSMSの通知は、オラクル社のホスティング通知サービスを通じて送信されていました。IM通知はサポートされていませんでした。
リリース11g 以降、ヒューマン・ワークフロー電子メール通知レイヤーはOracle User Messaging Serviceと連携し、タスクの状態が変化したことをユーザーに警告します。Oracle User Messaging Serviceでは、BPELプロセスまたはヒューマン・タスクから起動できる、電子メール、ボイス、IMまたはSMSのいずれかのチャネルを通じて通知を送信するための操作が公開されています。
Oracle User Messaging Serviceは次の機能をサポートしています。
メッセージおよびステータスの送受信
特定のチャネルの指定したアドレスへの通知送信
一連のフェイルオーバー・アドレスへの通知送信
Oracle Fusion Middleware以外のアプリケーション・サーバーでは、電子メール通知に対してヒューマン・ワークフロー電子メール通知レイヤーを使用できます。
Oracle User Messaging Serviceの構成に関する詳細は、次を参照してください。
Oracle Enterprise Manager Fusion Middleware Controlコンソールの通知サービス配信チャネルの構成方法は『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』
各電子メール通知には、次のパートを含めることができます。
通知メッセージ
Oracle BPM WorklistからのHTMLコンテンツ
これは、タスクに関するOracle BPM Worklistの読取り専用ビューです。Oracle BPM Worklistからのコンテンツを含むように電子メール通知を構成する方法は、第29.7項「電子メール通知の作成」を参照してください。
タスクの添付ファイル
通知にタスクの添付ファイルが含まれている場合です。
アクション可能リンク
SMS、IMおよびボイスによる通知には、通知メッセージのみが含まれます。
通知メッセージは、静的なテキストと動的な値を含めることができるXPath式です。メッセージの作成時に動的な値に使用できるのは、タスクBPEL変数のみです。メッセージはBPELプロセスのコンテキスト外で評価されるため、この制限があります。また、タスク変数のペイロードでは、XPathツリー参照用のペイロードの型を含むために、強い型指定が使用されます。XPath拡張関数hwf:getNotificationProperty(propertyName)
を使用すると、特定の通知のプロパティを取得できます。この関数は、対応する値に対して通知ごとに評価されます。propertyName
の値は、次のいずれかです。
recipient
通知の受信者
recipientDisplay
受信者の表示名
taskAssignees
タスクの割当て先
taskAssigneesDisplay
タスク割当て先の表示名
locale
受信者のロケール
taskId
通知対象となるタスクのID
taskNumber
通知対象となるタスクの番号
appLink
Oracle BPM Worklistのタスク詳細ページへのHTMLリンク
例32-4に、hwf:getNotificationProperty
とhwf:getTaskResourceBundle
を使用する方法を示します。
例32-4 hwf:getNotificationPropertyとhwf:getTaskResourceBundleの使用
concat('Dear ', hwf:getNotificationProperty('recipientDisplay'), ' Task ', /task:task/task:systemAttributes/task:taskNumber, ' is assigned to you. ', hwf:getTaskResourceBundleString(/task:task/task:systemAttributes/task:taskId, 'CONGRATULATIONS', hwf:getNotificationProperty('locale')))
この場合、メッセージは次のようになります。
Dear Cooper, James Task 1111 is assigned to you. Congratulations
ヒューマン・ワークフロー電子メール通知レイヤーは、介入が必要なエラーが発生した場合に管理者に警告するように、自動的に構成されます。エラー通知とエラー・レスポンス・メッセージは維持されます。
メッセージは、Oracle Enterprise Manager Fusion Middleware Controlコンソールで表示できます。
メッセージ表示の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
Oracle User Messaging Serviceと連携するヒューマン・ワークフロー電子メール通知レイヤーでは、次の信頼性をサポートしています。
次の場合、メッセージは紛失しません。
ヒューマン・ワークフローからのメッセージ受信を確認した後で、ヒューマン・ワークフロー電子メール通知レイヤーで障害が発生した場合。
Oracle User Messaging Serviceがヒューマン・ワークフローからのメッセージ受信を確認する前に、ヒューマン・ワークフロー電子メール通知レイヤーとOracle User Messaging Serviceの両方で障害が発生した場合。
Oracle User Messaging Serviceが停止した場合。メッセージ配信は成功するまで再試行されます。
通知チャネルが停止した場合。
通知が配信できない場合は3回再試行され、そのアドレスが無効としてマークされます。また、そのアドレスは不正アドレス・リストに追加されます。必要な場合は、Oracle Enterprise Manager Fusion Middleware Controlコンソールで不正アドレス・リストからアドレスを手動で削除できます。発信通知は、アドレスが訂正されるまで再送信されません。不適切に識別されるのを防ぐために、アドレスが無効とマークされるのは約1時間のみです。この時間内に、新規の通知が送信されることはありません。
スパム・メール発信者として識別されているアドレスからの受信通知レスポンスは無視されます。
受信通知メッセージは維持されます。
通知配信失敗を示す受信通知レスポンス(ホスト不明メールなど)は無視されません。かわりに修正処理(不正アドレス・リストの更新など)が自動的に実行されます。
受信通知レスポンスは、通知ステータスを示す確認が送信者に送られるように構成できます。
受信通知レスポンスの検証は、受信通知メッセージと送信通知メッセージを関連付けて実行されます。
通知の詳細は、次を参照してください。
『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』
管理者は、次の管理タスクをOracle Enterprise Manager Fusion Middleware Controlコンソールから実行できます。
失敗した通知や誤りのある受信通知レスポンスを表示し、修正処理を実行します。
送信通知とアドレスの削除、再送信、編集などの修正処理を実行します。
受信通知レスポンスについて、不正な電子メールを表示して電子メール・アドレスをブロックします。
不正な電子メール・アドレスのリストを管理します。
失敗した通知のランタイム・データにアクセスします。このデータは、不要になった場合消去できます。
詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
通知チャネル・プリファレンスを構成する手順は、次のとおりです。
Oracle Jdeveloperで、電子メールおよび他のチャネル用の通知サービスを構成します。詳細は、第17章「通知サービスの使用」を参照してください。
Oracle JDeveloperで、ヒューマン・タスク・エディタを開きます。
タスク通知は、ヒューマン・タスク・エディタでタスクを作成するときに構成できます。異なるアクションについて、様々なタイプの参加者に通知を送信できます。
タスク通知が送信可能なアクションについては、第28.3.10.1項「受信者へのタスク・ステータス変更の通知」を参照してください。
通知は、様々な範囲でタスクに関与するユーザーに送信できます。これらのユーザーについては、第28.3.10.1項「受信者へのタスク・ステータス変更の通知」を参照してください。
タスクがグループに割り当てられていて、そのグループに通知エンドポイントが設定されていない場合は、グループの各ユーザーに通知が送信されます。
詳細は、次を参照してください。
ヒューマン・タスク・エディタでタスク通知を構成する方法は第28.3.10項「参加者の通知プリファレンスの指定方法」
通知チャネル構成の詳細は『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』
Oracle Enterprise Manager Fusion Middleware Controlコンソールのメッセージング・サーバー・ページから、適切なチャネル(電子メールなど)を構成します。詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
Oracle Enterprise Manager Fusion Middleware Controlコンソールの「ワークフロー通知プロパティ」ページから、すべてのチャネルまたは電子メールに、通知サービスの通知モード・パラメータを構成します。
この値は、デフォルトで「なし」に設定されています。これは、通知が送信されないことを意味します。可能な値は次のとおりです。
すべて
電子メール、IM、SMSおよびボイスのチャネルを構成し、任意のチャネルを通じて通知を送信します。
電子メール
通知メッセージ送信に、電子メール・チャネルのみが構成されます。
なし
通知メッセージの送信用にどのチャネルも構成されません。これがデフォルトの設定です。
通知は、複数のソースから生成され多様に国際化された4つのタイプのデータで構成されます。ただし、国際化されたすべての通知のロケールは、アイデンティティ・サービスのBPMUser
オブジェクトから取得されます。
パッケージ済の文字列(アクション・リンク、コメント、Oracle BPM Worklistなど)
これらの文字列は、次のパッケージの一部として製品に国際化されています。
oracle.bpel.services.workflow.resource
ユーザーのロケールは適切なメッセージの取得に使用します。
タスク詳細添付
ユーザーのロケールはタスク詳細HTMLコンテンツの取得に使用します。
タスクの結果文字列(承認、却下など)
ヒューマン・タスク・エディタの「詳細設定」セクションでタスク定義がモデリングされると、結果のリソース・バンドルが指定されます。リソース・バンドルの各結果のキーは結果の名前そのものです。
通知メッセージ
様々な言語で通知メッセージを構成する手順は、次のとおりです。
次の方法のいずれかを使用して、通知コンテンツのメッセージを国際化します。
タスク定義の際に指定したリソース・バンドル中の値を使用するには、次のXPath拡張関数を使用します。
hwf:getTaskResourceBundleString(taskId, key, locale?)
この関数は、タスク定義で指定されたリソース・バンドルから、国際化された文字列を返します。
通知受信者ロケールは、次の関数によって取得できます。
hwf:getNotificationProperty('locale')
通知に対応するタスクIDは、次の関数によって取得できます。
hwf:getNotificationProperty('taskId')
異なるリソース・バンドルが使用されている場合は、次のXPath拡張関数を使用してローカライズされたメッセージを取得します。
orcl:get-localized-string()
詳細は、第28.3.8.2項「多言語設定の指定」を参照してください。
アクション可能なメッセージの送信方法は数種類あります。この項では、手順の概要について説明します。
アクション可能な電子メールを使用できるようにタスクを設定している場合は、電子メールを介してタスク・アクションを実行できます(同じアクションをOracle BPM Worklistからも実行できます)。アクション可能な電子メール・アカウントは、タスク・アクション関連の電子メールを受信して処理します。
ヒューマン・タスクのアクション可能な電子メールを送信する手順は、次のとおりです。
ヒューマン・タスク・エディタの「通知」セクションの「詳細」タブで、「通知をアクション可能にする」を選択して、電子メール通知をアクション可能にします。これにより、電子メールを介してタスク・アクションを実行できます。
通知がアクション可能な場合、電子メールにはカスタムの結果ごとにリンクが含まれます。
通知メッセージでタスクの添付ファイルを送信するには、「電子メール通知によるタスクの添付ファイルの送信」を選択します。
アクション可能な電子メールが到着した後に、次のタスクを実行します。
「承認」リンクをクリックし、新規の電子メール・ウィンドウを起動します。このウィンドウには、承認データが表示されます。図32-3に詳細を示します。
承認メールの「コメント」セクションにコメントを追加します。例:
This contract has been approved based on the attached information.
図32-4に示すように、必要に応じて添付ファイルを追加します。
この電子メールの件名や本文など、何も変更しないでください。NID
部分文字列を含むコンテンツを変更すると、電子メールは処理されません。
「送信」をクリックします。
Oracle Enterprise Manager Fusion Middleware ControlコンソールのOracle User Messaging Serviceセクションから、受信サーバー、送信メール・サーバー、送信ユーザー名とパスワードなどのプロパティを設定します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールの「ワークフロー通知プロパティ」ページで、通知モードを「すべて」または「電子メール」に設定します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールの「ワークフロー・タスク・サービス・プロパティ」ページで、アクション可能な電子メールのアカウント名を設定します。
Oracle Enterprise Manager Fusion Middleware Controlコンソールの「Oracle User Messaging Service」セクション、「ワークフロー通知プロパティ」ページおよび「ワークフロー・タスク・サービス・プロパティ」ページの詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
「添付ファイルを含む」フラグが選択されている場合は、電子メールのみが送信されます。電子メールには、タスクのすべての添付ファイルが電子メール添付ファイルとして含まれます。
インバウンドおよびアウトバウンド添付ファイルを送信する手順は、次のとおりです。
ヒューマン・タスク・エディタの「通知」セクションの「詳細」タブで、「電子メール通知によるタスクの添付ファイルの送信」を選択します。
アクション可能な電子メール・リプライでは、電子メールに添付ファイルを追加できます。これらの添付ファイルはタスクの添付ファイルとして追加されます。
詳細は、第28.3.10.7項「電子メール・メッセージのアクション可能化」を参照してください。
インバウンド・コメントを送信する手順は、次のとおりです。
アクション可能な電子メール・リプライでは、図32-3に示すとおり、Comments[['と']]
の間にコメントを追加します。これらのコンテンツはタスクのコメントとして追加されます。たとえばComments[[looks good]]
とします。
セキュアな通知を送信する手順は、次のとおりです。
ヒューマン・タスク・エディタの「通知」セクションの「詳細」タブで、「通知のセキュア化(詳細を除く)」を選択します。これにより、デフォルトの通知メッセージを使用できます。この場合、通知メッセージにはタスクのコンテンツは含まれません。また、この通知はアクション可能ではありません。デフォルトの通知メッセージには、Oracle BPM Worklist内のタスクへのリンクが含まれています。タスク詳細を参照するにはログインする必要があります。
詳細は、第28.3.10.5項「通知のセキュア化(詳細を除く)」を参照してください。
通知に使用されるチャネルを設定する手順は、次のとおりです。
Oracle BPM Worklistのプリファレンス・ユーザー・インタフェースを使用して優先通知チャネルを設定します。チャネルは、通知を送信する前にユーザー・プリファレンス・ストアに問い合せることで、動的に決定されます。ユーザー・プリファレンスが指定されていない場合は、電子メールのチャネルが使用されます。
Oracle Delegated Administration Serviceの詳細は、『Oracle Fusion Middleware Guide to Delegated Administration for Oracle Identity Management』を参照してください。
タスクは、リマインダを送信するように構成できます。リマインダは、タスクがユーザーに割り当てられた時刻またはタスクの有効期限が切れる時刻に基づいています。リマインダの数およびリマインダ間の間隔も構成可能です。タスクがASSIGNED
としてマークされている場合、リマインダに使用されるメッセージはASSIGNEES
に対するメッセージです。
リマインダを送信する手順は、次のとおりです。
ヒューマン・タスク・エディタの「通知」セクションの「詳細」タブで、リマインダを設定します。リマインダ構成に関連するパラメータは、次のとおりです。
Recurrence
:
リマインダの送信回数を指定します。recurrenceに使用可能な値は、EVERY
、NEVER
、0
、1
、2
…、10
です。
RelativeDate
:
タスクの割当て日または有効期限日のどちらからリマインダ期間を相対的に計算するかを指定します。relativeDate
に使用可能な値は、ASSIGNED
、EXPIRATION
およびBEFORE DUE DATE
です。「要求されたアクションの期日」オプション(以前のリリースでは「期間を使用」と呼ばれていたオプション)を使用するために、タスクのエスカレーションおよび有効期限ポリシーを変更した場合、Oracle JDeveloperには最終的な値が表示されます。
Duration
:
relativeDate
からの、最初のリマインダとそれ以降の各リマインダの期間を指定します。期間のデータ型は、xsd:duration
であり、その書式はISO 8601によりPnYnMnDTnHnMnS
という形式で定義されています。大文字はデリミタであり、対応するメンバーを使用しない場合は省略できます。この例には、PT1004199059S
、PT130S
、PT2M10S
、P1DT2S
、-P1Y
、P1Y2M3DT5H20M30.123S
などがあります。
次の例で、リマインダが送信されるタイミングを具体的に説明します。
relativeDate
がASSIGNED
、recurrence
がEVERY
、およびリマインダの期間がPT1D
であるとします。タスクが2005年3月24日午前10:00
に割り当てられた場合、リマインダは2005年3月25日午前10:00
、2005年3月26日午前10:00
、2005年3月27日午前10:00
に送信され、さらにユーザーがタスクに対するアクションを実行するまで続きます。
relativeDate
がEXPIRATION
、recurrence
が2
、およびリマインダ期間がPT1D
であるとします。タスクの有効期限切れが2005年3月26日午前10:00
で、タスクが2005年3月24日午前10:00
より前に割り当てられた場合、リマインダは2005年3月24日午前10:00
と2005年3月25日午前10:00
に送信されます。
relativeDate
がEXPIRATION
、recurrence
が2
、およびリマインダ期間がPT1D
であるとします。タスクの有効期限切れが2005年3月26日午前10:00
で、タスクが2005年3月24日午後3:00
に割り当てられた場合、リマインダは2005年3月25日午前10:00
の1回のみ送信されます。
詳細は、第28.3.10.3項「リマインダの設定」を参照してください。
システム・エラー、例外エラー、ユーザー・エラーなどのために、受信メッセージを処理できない場合、ヒューマン・ワークフロー通知サービスは自動返信メッセージを送信します。グローバル・リソース・バンドル内のこれらのメッセージに対するテキストは変更できます。例32-5にWorkflowLabels.properties
ファイルを示します。詳細は、第32.5.2項「グローバル・リソース・バンドル: WorkflowLabels.properties」を参照してください。
例32-5 WorkflowLabels.properties
# String to be prefixed to all auto reply messages AUTO_REPLY_PREFIX_MESSAGE=Oracle Human Workflow Service # String to be sufixed to all auto reply mesages AUTO_REPLY_SUFFIX_MESSAGE=This message was automatically generated by Human \ Workflow Mailer. Do not reply to this mail. # Message indicating closed status of a notified task TaskClosed=You earlier received the notification shown below. That notification \ is now closed, and no longer requires your response. You may \ simply delete it along with this message. # Message indicating that notification was "replied" to instead of "responded" by # using the response link. EMailRepliedNotification=The message you sent appeared to be a reply to a \ notification. To respond to a notification, use the \ response link that was included with your notification. # EMailUnSolicited= The message you sent did not appear to be in response to a \ notification. If you are responding to a notification \ Use the response link that was included with your notification. EMailUnknownContent= The message you sent did not appear to be in response to a \ notification. If you are responding to a notification, \ Use the response link that was included with your notification. ResponseNotProcessed=Your response to notification could not be processed. \ Log in to worklist application for more details. ResponseProcessed=Your response to notification was successfully processed.
タスク参加者が複数の通知チャネルにアクセスする可能性もあります。カスタム通知ヘッダーを使用すると、このような参加者のタイプが通知を受信する優先チャネルとして単一のチャネルを指定できます。
カスタム通知ヘッダーを作成する手順は、次のとおりです。
ヒューマン・タスク・エディタの「通知」セクションの「詳細」タブの「通知ヘッダーの属性」セクションで、使用する優先通知チャネル(ボイス、SMSなど)を指定するカスタム通知ヘッダーを作成します。ヒューマン・ワークフロー電子メール通知レイヤーは、これらのヘッダー値をOracle User Messaging Serviceのルールベース通知サービスに提供します。
たとえば、「名前」フィールドをdeliveryType
に設定し、「値」フィールドをSMS
に設定します。
ルールベースの通知サービスは、使用する優先通知チャネルを特定する目的のみに使用される点に注意してください。優先チャネルのアドレスは、Oracle Identity Managementから取得されます。通知メッセージは、両方のサービスによって提供される情報から作成されます。
詳細は、次を参照してください。
この項では、Dynamic Assignment Functionを使用した割当てサービスの構成方法について説明します。
タスクがグループに割り当てられると、グループ内のユーザーは通常、そのタスクを申告して操作する必要があります。ただし、様々なディスパッチ・メカニズムを使用すると、グループ内のユーザーに作業を自動的に送信できます。自動タスク・ディスパッチは、Dynamic Assignment Functionを介して実行されます。Dynamic Assignment Functionでは、グループ、ユーザー・リストまたはグループ・リストから、特定のユーザーまたはグループが選択されます。いくつかの関数が自動的に提供されます。ただし、独自の関数を作成してワークフロー・サービスに登録することもできます。表32-21に、3つのDynamic Assignment Functionを示します。
表32-21 Dynamic Assignment Function
関数 | タイプ | 説明 |
---|---|---|
|
動的割当て |
現在割り当てられているタスク数が最も少ないユーザーまたはグループを選択します。 |
|
タスク・エスカレーション |
マネージャのマネージャを選択します。 |
|
動的割当て |
特定の期間(デフォルトでは過去7日間)に最も多くのタスクを完了したユーザーまたはグループを選択します。 |
|
動的割当て |
各ユーザーまたはグループを順番に選択します。 |
これらの関数ではいずれもユーザーの休暇ステータスがチェックされます。現在割当てできないユーザーにタスクが自動的に割り当てられることはありません。
これらのDynamic Assignment Functionは、BPELプロセスまたはタスク定義でカスタムXPath関数を使用してコールできます。
wfDynamicUserAssign
wfDynamicGroupAssign
これらのXPath関数は、次のパラメータを2つ以上指定してコールする必要があります。
コールするDynamic Assignment Functionの名前。
関数の実行対象となるグループの名前(またはユーザー・リストやグループ・リスト)。(オプション)ユーザーまたはグループが属しているアイデンティティ・レルム(デフォルト値はデフォルトのアイデンティティ・レルム)。
Dynamic Assignment Function固有のその他のオプション・パラメータ。割当て関数MOST_PRODUCTIVE
の場合は、ユーザーの生産性の計算対象となる期間(日数)です。他の2つの関数では、追加のパラメータは使用しません。
また、グループ用に作成したヒューマン・ワークフロー・ルールでは、Dynamic Assignment Functionを使用してタスクを再割当てするメンバーをそのグループから選択できます。
これらの関数の他に、独自のDynamic Assignment Functionを実装して構成できるようにDynamic Assignment Frameworkが用意されています。
次の手順に従って、独自のDynamic Assignment Functionを実装します。
Dynamic Assignment Functionを実装する手順は、次のとおりです。
次のインタフェースの一方または両方を実装するJavaクラスを記述します。
oracle.bpel.services.workflow.assignment.dynamic. IDynamicUserAssignmentFunction oracle.bpel.services.workflow.assignment.dynamic. IDynamicGroupAssignmentFunction
Dynamic Assignment Functionでユーザーを選択する場合は、最初のインタフェースを実装します。グループを選択する場合は、第2のインタフェースを実装します。ユーザーとグループの両方を選択可能にする場合は、両方のインタフェースを実装します。
前述の2つのインタフェースは、どちらもインタフェースoracle.bpel.services.workflow.assignment.dynamic.IDynamicAssignmentFunction
を拡張します。
Javaクラスでは、そのインタフェースのメソッドも実装する必要があります。これらのインタフェースはJavadocに示されます。
Dynamic Assignment Frameworkには、ユーティリティ・クラスoracle.bpel.services.workflow.assignment.dynamic.DynamicAssignmentUtils
も用意されています。
このクラスは、Dynamic Assignment Functionの実装時に役立つ多数のメソッドを提供します。
動的割当てのインタフェースとユーティリティに関するJavadocの詳細は、Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンスを参照してください。
Dynamic Assignment Functionは、Oracle Enterprise Manager Fusion Middleware Controlコンソールで他のヒューマン・タスク構成パラメータとともに構成します。
Dynamic Assignment Functionごとに、このファイルに2つの必須パラメータを<function>
タグ形式で指定する必要があります。
functionタグには、次の2つの属性を含める必要があります。
name
:
関数名
classpath
:
関数を実装するクラスの完全修飾クラス名。
また、各関数には、必要な数のプロパティをオプションで指定できます。これらのプロパティは単純な名前/値ペアで、初期化パラメータとして関数に渡されます。
これらのタグで指定したプロパティ値は、Dynamic Assignment FunctionのsetInitParameters
メソッドに(name属性の値で索引付けされた)マップとして渡されます。
関数のうち2つは、初期化パラメータをとります。この種の関数は次のとおりです。
ROUND_ROBIN
MAX_MAP_SIZE
パラメータには、関数がROUND_ROBIN
カウントを維持できる一連のユーザーまたはグループの最大数を指定します。Dynamic Assignment Functionでは、ROUND_ROBIN
関数を実行するように要求される各グループ(またはユーザーとグループのリスト)について、ユーザーとグループのリストがメモリーに保持されます。
MOST_PRODUCTIVE
DEAFULT_TIME_PERIOD
パラメータには、ユーザーの生産性を計算する期間(日数)を指定します。この値は、MOST_PRODUCTIVE
Dynamic Assignment Functionをコールするときに上書きできます。XPath関数は、そのXPath関数のコールで第3のパラメータとして代替値を指定して使用します。
Oracle Enterprise Manager Fusion Middleware ControlコンソールからDynamic Assignment Functionを構成する方法の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
ランタイム構成サービスには、使用可能なユーザーとグループのDynamic Assignment Functionのリストを返すメソッドが用意されています。これらの関数では、関数の名前とユーザー表示可能なラベルの両方が返されます。この関数では表示名のローカライズがサポートされるため、コンテキスト・ユーザーには適切な言語で表示されます。これらの関数は、使用可能なDynamic Assignment Functionのリストを表示するためにOracle BPM Worklistで使用されます。これは、Dynamic Assignment Functionのみに適用されます。タスク・エスカレーション関数の表示名はサポートされていません。
Dynamic Assignment Functionの表示名を構成する手順は、次のとおりです。
エントリをリソース・プロパティ・ファイルWorkflowLabels.properties
に追加し、関連リソース・プロパティ・ファイルを他の言語で追加して、Dynamic Assignment Functionの表示名(および適切なトランスレーション)を指定します。このファイルは、ワークフロー構成パラメータworkflowCustomizationsClasspathURL
で識別されるクラスパス内にあります。
Dynamic Assignment Functionのエントリには、次の書式を使用する必要があります。
DYN_ASSIGN_FN.[function name]=Function Display Name
たとえば、ROUND_ROBIN
関数のエントリは次のようになります。
DYN_ASSIGN_FN.ROUND_ROBIN = Round Robin
これらのファイルにDynamic Assignment Functionのエントリを追加するかどうかはオプションであることに注意してください。ファイルにエントリが存在しない場合は、かわりに関数名(ROUND_ROBIN
など)が使用されます。
WorkflowLabels.properties
ファイルの詳細は、次のURLで入手可能なサンプルのworkflow-110-workflowCustomizationsを参照してください。
https://soasamples.samplecode.oracle.com/
ヒューマン・ワークフロー参加者は、ルーティング・スリップで宣言的に指定されます。ルーティング・スリップでは、参加者およびヒューマン・ワークフローへの参加方法(管理チェーン階層、承認者のシリアル・リストなど)を指定することでヒューマン・ワークフローの進行方法を決定します。
ヒューマン・タスク・エディタでは様々な組込みパターンを使用して、ルーティング・スリップを宣言的に作成できます。さらに、ビジネス・ルールに基づいた拡張ルーティングを使用して、より複雑にルーティングできます。ただし、カスタム・ロジックを使用してより高度なルーティングを作成するには、カスタム割当てサービスを実装してルーティングします。このような動的割当てをサポートするために、割当てサービスが使用されます。割当てサービスは、タスク割当て先の決定を担当します。独自の割当てサービスを実装し、その実装をプラグイン接続して特定のヒューマン・ワークフローで使用することもできます。
割当てサービスにより、ヒューマン・ワークフローの次のタスク割当て詳細が決定されます。
タスク開始時の割当て。
タスク再開始時の割当て。
ユーザーがタスクの結果を更新するときの割当て。タスクの結果が更新された場合、そのタスクは他のユーザーにルーティングするか完了にできます。
タスク情報のリクエスト元の割当て先。
タスクでOracle BPM Worklistからの再承認をサポートしている場合、ユーザーは再承認のための情報をリクエストできます。
再承認がサポートされている場合にタスクを再承認するユーザー。
ヒューマン・ワークフロー・サービスでは、特定のタスクについて割当てサービスが識別されて起動され、タスク割当てが決定されます。
たとえば、単純割当てサービスの繰返しは次のとおりです。
クライアントが、割当てサービスによりルーティングが決定される経費承認タスクを開始します。
割当てサービスが、タスク割当て先をjcooper
であると決定します。
jcooper
がタスクを承認すると、割当てサービスがタスクをjstein
に割り当てます。また、割当てサービスはタスク作成者であるjlondon
に必ず通知を送信するように指定します。
jstein
がタスクを承認し、割当てサービスは他にタスクの割当て先ユーザーがいないことを示します。
割当てサービスを実装する手順は、次のとおりです。
割当てサービスは、IAssignmentService
インタフェースを使用して実装します。ヒューマン・ワークフロー・サービスは、次の情報を割当てサービスに渡してタスク割当てを決定します。
タスク・ドキュメント
ヒューマン・ワークフローで実行されるタスク・ドキュメント。タスク・ドキュメントには、ペイロードと他のタスク情報(現在の状態など)が含まれています。
プロパティのマッピング
割当てサービスを指定するときは、プロパティのリストを指定して、タスク割当て先を決定するバックエンド・サービスにコールバックを相関付けることもできます。
タスク履歴
タスク履歴は、タスクの履歴をトレースするための時系列順のタスク・ドキュメントのリストです。このリスト内のタスク・ドキュメントには、実際のタスクの属性のサブセット(state
、updatedBy
、outcome
、updatedDate
など)が含まれています。
注意:
|
独自の割当てサービス・プラグインを実装できます。このプラグインは、ヒューマン・ワークフロー実行時にヒューマン・ワークフロー・サービスによって起動されます。
例32-6では、TestAssignmentService.java
と呼ばれるIAssignmentService
実装の例を示します。
例32-6 IAssignmentService実装の例
/* $Header: TestAssignmentService.java 24-may-2006.18:26:16 Exp $ */ /* Copyright (c) 2004, 2006, Oracle. All rights reserved. */ /* DESCRIPTION Interface IAssignmentService defines the callbacks an assignment service implements. The implementation of the IAssignmentService is called by the workflow service PRIVATE CLASSES <list of private classes defined - with one-line descriptions> NOTES <other useful comments, qualifications, etc.> MODIFIED (MM/DD/YY) */ /** * @version $Header: IAssignmentService.java 29-jun-2004.21:10:35 Exp $ * * */ package oracle.bpel.services.workflow.test.workflow; import java.util.ArrayList; import java.util.List; import java.util.Map; import oracle.bpel.services.workflow.metadata.routingslip.model.*; import oracle.bpel.services.workflow.metadata.routingslip.model.Participants; import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*; import oracle.bpel.services.workflow.task.IAssignmentService; import oracle.bpel.services.workflow.task.ITaskAssignee; import oracle.bpel.services.workflow.task.model.Task; public class TestAssignmentService implements oracle.bpel.services.workflow.task.IAssignmentService { static int numberOfApprovals = 0; static String[] users = new String[]{"jstein", "wfaulk", "cdickens"}; public Participants onInitiation(Task task, Map propertyBag) { return createParticipant(); } public Participants onReinitiation(Task task, Map propertyBag) { return null; } public Participants onOutcomeUpdated(Task task, Map propertyBag, String updatedBy, String outcome) { return createParticipant(); } public Participants onAssignmentSkipped(Task task, Map propertyBag) { return null; } public List getAssigneesToRequestForInformation(Task task, Map propertyBag) { List rfiUsers = new ArrayList(); rfiUsers.add("jcooper"); rfiUsers.add("jstein"); rfiUsers.add("wfaulk"); rfiUsers.add("cdickens"); return rfiUsers; } public List getReapprovalAssignees(Task task, Map propertyBag, ITaskAssignee infoRequestedAssignee) { List reapprovalUsers = new ArrayList(); reapprovalUsers.add("jstein"); reapprovalUsers.add("wfaulk"); reapprovalUsers.add("cdickens"); return reapprovalUsers; } private Participants createParticipant() { if (numberOfApprovals > 2) { numberOfApprovals = 0; return null; } String user = users[numberOfApprovals++]; ObjectFactory objFactory = new ObjectFactory(); Participants participants = objFactory.createParticipants(); Participant participant = objFactory.createParticipantsTypeParticipant(); participant.setName("Loan Agent"); ResourceType resource2 = objFactory.createResourceType(user); resource2.setIsGroup(false); resource2.setType("STATIC"); participant.getResource().add(resource2); participants.getParticipantOrSequentialParticipantOrAdhoc(). add(participant); return participants; } }
カスタム割当てサービスをデプロイする手順は、次のとおりです。
次のメソッドを1つ使用して、割当てサービスの実装クラスおよび関連クラスをOracle BPEL Process Managerのクラスパスで使用可能にします。
クラスをSCA-INF/classes
に直接ロードするか、SCA-INF/lib
にJARとしてロードします。
ディレクトリ・ツリーまたはJARファイルにカスタム関数のクラス・ファイルを配置します。次に、クラスが置かれているJARまたはルート・ディレクトリを指すようにworklfowCustomClasspathURL
構成パラメータを更新します。これはURLであるため、Webサーバー上でクラス・ファイルをホスティングし、そのクラス・ファイルからHTTPを介して複数のOracle WebLogic Serverにアクセスできるようになります。さらに、そのファイルをメタデータ・レポジトリ(MDS)にデプロイし、ORAMDS URLを使用して適切な場所を指すようにすることもできます。この方法の詳細は、サンプルのworkflow-110-workflowCustomizationsを参照してください。このサンプルは、次のURLからダウンロードできます。
https://soasamples.samplecode.oracle.com/
注意:
|
カスタム・エスカレーション関数を使用すると、ヒューマン・ワークフロー内でカスタム・ルールを統合できます。
カスタム・エスカレーション関数を実装する手順は、次のとおりです。
カスタムのタスク・エスカレーション関数を作成し、この関数をタスク定義に使用するヒューマン・ワークフロー・サービスに登録します。
ヒューマン・タスク・エディタを使用して、ヒューマン・ワークフローでルールを統合します。
詳細は、第28.3.9.6項「エスカレーション・ルールの指定」を参照してください。
次のコールバックおよびリソース・バンドルのクラスは、SOAプロジェクトから直接ロードできます。oracle.soainfra.common
共有ライブラリのクラスをロードしてOracle WebLogic Serverを再起動する必要はありません。
IAssignmentService
IRestrictedAssignmentService
IRoutingSlipCallback
IPercentageCompletionCallback
INotificationCallback
プロジェクト・レベルのリソース・バンドル
コールバック・クラスは、次の場所に配置できます。
プロジェクトのSCA-INF/lib
ディレクトリにあるJAR
プロジェクトのSCA-INF/classes
ディレクトリにあるクラス
さらに、下位互換性をサポートするために、プロジェクト・レベルのリソース・バンドルは、.task
ファイルと同じディレクトリ内に配置することもできます。
この項では、ヒューマン・ワークフロー・サービスで使用するリソース・バンドルと、リソース・バンドルをカスタマイズして代替のリソース文字列を提供する方法について説明します。
ヒューマン・ワークフロー・サービスAPIおよびOracle BPM Worklistでは、IWorkflowContext
オブジェクトのロケール設定を使用してAPIにアクセスします。これは、アイデンティティ・サービスで構成されているユーザー・ディレクトリ内のユーザーのロケールです。ユーザーに対してロケールが指定されていない場合は、かわりにJava EEサーバーのデフォルト・ロケールが使用されます。
APIクライアントでは、IWorkflowContext
オブジェクトに新しい値を設定することで、このロケールを上書きできます。Oracle BPM Worklistには、ユーザー・プリファレンス・オプションが用意されており、このオプションによって、ユーザーは、各自のユーザー・ディレクトリに設定されているロケールのかわりに、ブラウザのロケールを使用できます。
各ヒューマン・ワークフロー・コンポーネントは、リソース・バンドルに関連付けることができます。このバンドルによって、タスクの結果の表示名として使用するリソース文字列が定義されます。リソース文字列は、TaskMetadataService
メソッドのgetTaskDefinitionOutcomes
によって返され、Oracle BPM Worklistおよびタスク・フローのタスク詳細アプリケーションに表示されます。
また、ヒューマン・ワークフローのXPath関数のgetTaskResourceBundle
文字列を使用すると、タスクのリソース・バンドルのリソース文字列をルックアップできます。たとえば、このXPath関数は、タスクの通知メッセージの作成に使用するXPath式の一部として使用できます。
ヒューマン・ワークフロー・コンポーネントをリソース・バンドルに関連付けます。これを実行するには、ヒューマン・タスク・エディタの「プレゼンテーション」セクションにある「リソースの詳細」ダイアログの「リソース名」フィールドと「リソースの場所」フィールドを設定します。「リソースの場所」フィールドの値はURLであることに注意してください。リソース・バンドルは、このURLが指し示すJARファイル内に含めることができます。リソース・バンドルに対して共有場所を使用すると、複数のヒューマン・ワークフロー・コンポーネント間で同じリソース・バンドルを共有できます。
ヒューマン・ワークフロー・コンポーネントに対してリソース・バンドルが指定されていない場合は、グローバル・リソース・バンドル内でソース文字列がルックアップされます (第32.5.2項「グローバル・リソース・バンドル: WorkflowLabels.properties」を参照)。よく使用されるタスクの結果をグローバル・リソース・バンドルで定義すると、個別のヒューマン・ワークフロー・コンポーネントに対してリソース・バンドルを定義する必要性が減少します。
特定の結果に対してリソース文字列を配置できない場合は、その結果の名前がすべてのロケールで表示値として使用されます。
次のグローバル・リソース・バンドルは、ヒューマン・ワークフロー・サービスAPIによるリソース文字列のルックアップに使用されます。
oracle.bpel.services.worklfow.resource.WorkflowLabels.properties
このバンドルをカスタマイズすると、既存の表示文字列の代替を提供したり、他の文字列(マップ済属性のラベル、標準ビュー、カスタムのDynamic Assignment Function用など)を追加できます。
グローバル・リソース・バンドルでは、次の内容に対するリソース文字列が提供されます。
タスク属性
Oracle BPM Worklist(または他のクライアント)に表示される様々なタスク属性のラベル。リソース文字列値は、次のTaskMetadataService
メソッドから返されます。
getTaskAttributes
getTaskAttributesForTaskDefinition
getTaskAttributesForTaskDefinitions
マップ済属性のラベル
ランタイム構成サービスを介して作成されたマップ済属性のラベル。これらの文字列は、Oracle BPM Worklistで、マップ済属性を表示する際に使用されます。リソース文字列値は、次のTaskMetadataService
メソッドから返されます。
getTaskAttributesForTaskDefinition
getTaskAttributesForTaskDefinitions
マップ済属性マッピングに翻訳されたリソース文字列が必要な場合は、WorkflowLabels.properties
バンドルをカスタマイズして適切な文字列を挿入します。
タスクの結果
共有のタスクの結果に対するデフォルトのリソース文字列。前述のように、タスクの結果はタスク・リソース・バンドルで上書きできます。タスク固有のリソース・バンドルが指定されていない場合、リソース文字列は、TaskMetadataService
メソッドのgetTaskDefinitionOutcomes
から返されます。出荷時のグローバル・リソース・バンドルには、次の結果に対するリソース文字列が含まれています。
承認
却下
はい
いいえ
OK
遅延
承認
確認
Dynamic Assignment Function名
Dynamic Assignment Functionのラベル。これらの文字列は、ランタイム構成サービス・メソッドのgetUserDynamicAssignmentFunctions
およびgetGroupDynamicAssignmentFunctions
から返されます。同梱されているリソース・バンドルには、標準のDynamic Assignment Function(ROUND_ROBIN
、LEAST_BUSY
およびMOST_PRODUCTIVE
)のラベルが含まれています。追加のカスタムDynamic Assignment Functionが作成されている場合は、WorkflowLabels.properties
リソース・バンドルを変更して、新しい関数用のリソース文字を指定します。
標準ビュー名
標準ビューのラベル。作成した標準ビューに対して翻訳したリソース文字列が必要な場合は、それらの文字列をここで追加します。標準ビューのリソース文字列値は、リソース・バンドルからルックアップされ、UserMetadataService
メソッドのgetStandardTaskViewList
およびgetStandardTaskViewDetails
から、標準ビュー名として返されます。リソース文字列のキーは、標準ビューの作成時に指定した名前である必要があります。特定の標準ビューに対してリソース文字列を追加しない場合は、かわりに入力した名前が使用されます。
通知メッセージ
タスク・サービスによる自動通知の送信時に使用されるリソース文字列。通知メッセージは、ユーザーの要件にあわせてカスタマイズできます。
タスク・ルーティング・エラー・コメント
タスクのルーティングでエラーが発生すると、タスク・サービスは、エラーを記述したコメントをタスクに自動的に追加します。このコメントで使用される様々な文字列は、このリソース・バンドルで定義されます。
WorkflowLabels.properties
リソース・バンドルのコピーは、サンプルのworkflow-110-workflowCustomizationsから入手できます。
WorkflowLabels.properties
リソース・バンドルは、その内容を編集し、カスタマイズしたバージョンを、この製品に同梱されているバージョンより前のバージョンのワークフロー・サービスのクラスパスに追加してカスタマイズできます。
これを実行するには、次の方法があります。
カスタマイズしたファイルをディレクトリ・ツリー内の次の場所に配置します。
directory_path/oracle/bpel/services/workflow/resource/WorkflowLabels.properties
directory_path
を指し示すように、worklfowCustomClasspathURL
構成パラメータを更新します。(これはURLであるため、Webサーバー上でリソース・バンドルをホスティングし、そのリソース・バンドルに複数のOracle WebLogic Serverからアクセスできるようになります。)この方法の詳細は、サンプルのworkflow-110-workflowCustomizationsを参照してください。このサンプルは、次のURLからダウンロードできます。
https://soasamples.samplecode.oracle.com/
ADFワークリスト・クライアント・アプリケーションでは、次の2つのリソース・バンドルが使用されます。これらのハンドルには、ワークリスト・クライアントWebアプリケーションに表示されるすべての文字列が含まれています。
oracle.bpel.worklistapp.resource.WorkflowResourceBundle
:
このバンドルには、ADF Oracle BPM Worklistと、Oracle SOA Suiteのバージョン10.1.3に同梱されているJSPベースのサンプルのOracle BPM Worklistの両方で使用される文字列が含まれています。
oracle.bpel.worklistapp.resource.WorklistResourceBundle
:
このバンドルには、ADF Oracle BPM Worklistでのみ使用される文字列が含まれています。
ワークリストのリソース・バンドルのコピーは、サンプルのworkflow-110-workflowCustomizationsから入手できます。
このサンプルには、Oracle BPM Worklistのカスタマイズ方法が示されています。この方法によって、リソース・バンドルを再コンパイルし、更新したクラスをOracle BPM Worklistに追加します。
特定のタスク・タイプの詳細を表示するために作成されたADFタスク・フロー・アプリケーションと関連のデータ制御では、リソース・バンドルのoracle.bpel.services.workflow.worklist.resource.worklist
を使用してリソース文字列が格納されます。
タスク・フロー・アプリケーションにカスタマイズしたリソース・バンドルを追加すると、タスク詳細のADFタスク・フローに独自のカスタム・リソース文字列を提供できます。
このリソース・バンドルを使用すると、タスク・フロー・フォームに表示されるXML要素名をローカライズできます。各キーを追加すると、タスク・フロー・フォームのコンテンツ・セクションでそれらのキーを使用できます。入力テキスト・ラベルは、次のようになります。
#{resources.mykeyword}
WorkflowLabels.properties
リソース・バンドルのコピーは、サンプルのworkflow-110-workflowCustomizationsから入手できます。このサンプルには、タスク詳細のADFタスク・フロー・アプリケーションに、カスタマイズした独自のリソース文字列を提供する方法の詳細が示されています。
コンポジット・リソース・バンドルで、ステージ名と参加者名の翻訳済の値を指定できます。リソース・バンドルには次のようなエントリが含まれている必要があります。
stage_name
=
translated_value
participant_name
=
translated_value
デフォルトでは、ヒューマン・ワークフロー・システムでユーザー名の大/小文字は区別されません。すべてのユーザー名は小文字で格納されます。ただし、グループ名とアプリケーション・ロール名は常に大/小文字が区別されます。ユーザー名は、大/小文字を区別するようにOracle Enterprise Manager Fusion Middleware Controlコンソールで変更できます。
注意: この設定は、新規のインストールを実行した後にのみ変更してください。インスタンスをアクティブに処理しているインストール、または多数のインストールがデータベースにあるインストールでこの値を変更すると、重大な問題が発生します。 |
大/小文字を区別するように変更する手順は、次のとおりです。
Oracle Enterprise Manager Fusion Middleware Controlコンソールにログインします。
ナビゲータで、「SOA」フォルダを開きます。
「soa-infra」を右クリックし、「管理」→「システムMBeanブラウザ」の順に選択します。
ページの右側に「システムMBeanブラウザ」が表示されます。
「アプリケーション定義のMBean」→「oracle.as.soainfra.config」→「サーバー: server_name」→「WorkflowIdentityConfig」→「human-workflow」→「WorkflowIdentityConfig.PropertyType」の順に開きます。
「caseSensitive」をクリックします。
「操作」タブをクリックします。
「setValue」をクリックします。
「値」フィールドにtrue
と入力し、「起動」をクリックします。
10.1.3(デフォルトで、大/小文字を区別します)からアップグレードする場合、システムの動作を10.1.3と同じにするには、「caseSensitive」をtrue
に設定します。
この項では、ヒューマン・ワークフロー・クライアントとOracle WebLogic Serverサービスとの統合方法について説明します。
ヒューマン・ワークフロー・サービスは、次のワークフロー・サービスを公開します。
タスク・サービス
タスク問合せサービス
ユーザー・メタデータ・サービス
タスク・エビデンス・サービス
タスク・メタデータ・サービス
ランタイム構成サービス
タスク・レポート・サービス
これらのサービスを使用するには、ワークフロー・サービスに対してAbstract Factoryパターンを使用する必要があります。Abstract Factoryパターンを使用すると、共通のテーマを持つ各ファクトリのグループをカプセル化できます。
次のタスクを実行します。
特定のサービス・タイプに対してIWorkflowServiceClient
インスタンスを取得します。WorkflowServiceClientFactory
は、サービス・タイプに従ってIWorkflowServiceClient
を取得する静的ファクトリ・メソッドを提供します。
IWorkflowServiceClient
インスタンスを使用して、使用するサービス・インスタンスを取得します。
次の3つのサービス・タイプがサポートされています。
ローカル
リモート
SOAP
ローカル・クライアントとリモート・クライアントは、Enterprise JavaBeansクライアント(それぞれ、ローカルEnterprise JavaBeansとリモートEnterprise JavaBeans)を使用します。SOAPはSOAPクライアントを使用します。各タイプのサービスには、ワークフロー・クライアントを構成する必要があります。例32-7に詳細を示します。
例32-7 クライアント構成ファイル
<workflowServicesClientConfiguration> <server name="default" default="true"> <localClient> <participateInClientTransaction>false</participateInClientTransaction> </localClient> <remoteClient> <serverURL>t3://myhost.us.oracle.com:7001</serverURL> <userName>weblogic</userName> <password>weblogic</password> <initialContextFactory>weblogic.jndi.WLInitialContextFactory </initialContextFactory> <participateInClientTransaction>false</participateInClientTransaction> </remoteClient> <soapClient> <rootEndPointURL>http://myhost.us.oracle.com:7001</rootEndPointURL> <identityPropagation mode="dynamic" type="saml"> <policy-references> <policy-reference enabled="true" category="security" uri="oracle/wss10_saml_token_client_policy"/> </policy-references> </identityPropagation> </soapClient> </server> </workflowServicesClientConfiguration>
クライアント構成ファイルには、複数の構成についての定義が含まれています。各サーバーには一意の名前が指定されている必要があります。構成ファイルに複数のサーバーを定義した場合は、1つのサーバーのデフォルト属性にtrue
を設定する必要があります。workflowServicesClientConfiguration
にはserverType
というオプション属性があり、LOCAL
、REMOTE
またはSOAP
のいずれかに設定できます。各サーバーのクライアント・タイプを上書きするには、オプション属性のclientType
を使用します。
例32-8に詳細を示します。
例32-8 複数の構成が定義されたクライアント構成ファイル
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <workflowServicesClientConfiguration xmlns="http://xmlns.oracle.com/bpel/services/client" clientType="REMOTE" <server name="server1" default="true" clientType="SOAP"> <localClient> <participateInClientTransaction>false</participateInClientTransaction> </localClient> <remoteClient> <serverURL>t3://myhost1.us.oracle.com:7001</serverURL> <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory> <participateInClientTransaction>false</participateInClientTransaction> </remoteClient> --> <soapClient> <rootEndPointURL>http://myhost1.us.oracle.com:7001</rootEndPointURL> <identityPropagation mode="dynamic" type="saml"> <policy-references> <policy-reference enabled="true" category="security" uri="oracle/wss10_saml_token_client_policy"/> </policy-references> </identityPropagation> </soapClient> </server> <server name="server2"> <localClient> <participateInClientTransaction>false</participateInClientTransaction> </localClient> <remoteClient> <serverURL>t3://myhost2.us.oracle.com:7001</serverURL> <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory> <participateInClientTransaction>false</participateInClientTransaction> </remoteClient> --> <soapClient> <rootEndPointURL>http://myhost2us.oracle.com:7001</rootEndPointURL> <identityPropagation mode="dynamic" type="saml"> <policy-references> <policy-reference enabled="true" category="security" uri="oracle/wss10_saml_token_client_policy"/> </policy-references> </identityPropagation> </soapClient> </server> </workflowServicesClientConfiguration>
例32-8では、server2
にデフォルトのclientType
のREMOTE
が使用されていますが、server1
にはデフォルトのclientType
の値を上書きしてSOAP
のclientType
が使用されています。wf_client_config.xml
ファイルのかわりに、JAXBオブジェクトのWorkflowServicesClientConfigurationType
が使用されている場合も、同じルールが適用されます。
構成でクライアント・タイプを定義すると、WorkflowServiceClientFactory
クラスのファクトリ・メソッドを使用できます。例32-9に詳細を示します。
例32-9 WorkflowServiceClientFactoryクラスのファクトリ・メソッド
public static IWorkflowServiceClient getWorkflowServiceClient(WorkflowServicesClientConfigurationType wscc, Logger logger) throws WorkflowException
マップでプロパティのCONNECTION_PROPERTY.CLIENT_TYPE
を使用してクライアント・タイプを定義すると、例32-10に示すファクトリ・メソッドを使用できます。
例32-10 CONNECTION_PROPERTY.CLIENT_TYPEのファクトリ・メソッド
public static IWorkflowServiceClient getWorkflowServiceClient(Map<CONNECTION_ PROPERTY, String> properties, String serverName, Logger logger) throws WorkflowException
例32-11に、タスク問合せサービス・クライアントのコード例を示します。
例32-11 タスク問合せサービス・クライアントのコード
/** * WFClientSample */ package oracle.bpel.services.workflow.samples; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import oracle.bpel.services.workflow.IWorkflowConstants; import oracle.bpel.services.workflow.WorkflowException; import oracle.bpel.services.workflow.client.IWorkflowServiceClient; import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory; import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants .CONNECTION_PROPERTY; import oracle.bpel.services.workflow.query.ITaskQueryService; import oracle.bpel.services.workflow.query.ITaskQueryService.AssignmentFilter; import oracle.bpel.services.workflow.query.ITaskQueryService.OptionalInfo; import oracle.bpel.services.workflow.repos.Ordering; import oracle.bpel.services.workflow.repos.Predicate; import oracle.bpel.services.workflow.repos.TableConstants; import oracle.bpel.services.workflow.verification.IWorkflowContext; public class WFClientSample { public static List runClient(String clientType) throws WorkflowException { try { IWorkflowServiceClient wfSvcClient = null; ITaskQueryService taskQuerySvc = null; IWorkflowContext wfCtx = null; // 1. this step is optional since configuration can be set in wf_client_ config.xml file Map<CONNECTION_PROPERTY, String> properties = new HashMap<CONNECTION_ PROPERTY, String>(); if (WorkflowServiceClientFactory.REMOTE_CLIENT.equals(clientType)) { properties.put(CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://myhost.us.oracle.com:7001"); properties.put(CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "weblogic"); properties.put(CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic"); } else if (WorkflowServiceClientFactory.SOAP_CLIENT.equals(clientType)) { properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost:7001"); properties.put(CONNECTION_PROPERTY.SOAP_IDENTITY_ PROPAGATION,"non-saml"); // optional } // 2. gets IWorkflowServiceClient for specified client type wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(clientType, properties, null); // 3. gets ITaskQueryService instance taskQuerySvc = wfSvcClient.getTaskQueryService(); // 4. gets IWorkflowContext instance wfCtx = taskQuerySvc.authenticate("jcooper", "welcome1".toCharArray(), "jazn.com"); // 5. creates displayColumns List<String> displayColumns = new ArrayList<String>(8); displayColumns.add("TASKID"); displayColumns.add("TASKNUMBER"); displayColumns.add("TITLE"); displayColumns.add("CATEGORY"); // 6. creates optionalInfo List<ITaskQueryService.OptionalInfo> optionalInfo = new ArrayList<ITaskQueryService.OptionalInfo>(); optionalInfo.add(ITaskQueryService.OptionalInfo.DISPLAY_INFO); // 7. creates assignmentFilter AssignmentFilter assignmentFilter = AssignmentFilter.MY_AND_GROUP; // 8. creates predicate List<String> stateList = new ArrayList<String>(); stateList.add(IWorkflowConstants.TASK_STATE_ASSIGNED); stateList.add(IWorkflowConstants.TASK_STATE_INFO_REQUESTED); Predicate predicate = new Predicate(TableConstants.WFTASK_STATE_COLUMN, Predicate.OP_IN, stateList); // 9. creates ordering Ordering ordering = new Ordering(TableConstants.WFTASK_DUEDATE_COLUMN, true, false); ordering.addClause(TableConstants.WFTASK_CREATEDDATE_COLUMN, true, false); // 10. calls service - query tasks List taskList = taskQuerySvc.queryTasks(wfCtx, (List<String>) displayColumns, (List<OptionalInfo>) optionalInfo, (AssignmentFilter) assignmentFilter, (String) null, // keywords is optional (see javadoc) // optional predicate, ordering, 0, // starting row 100); // ending row for paging, 0 if no paging // Enjoy result System.out.println("Successfuly get list of tasks for client type: " + clientType + ". The list size is " + taskList.size()); return taskList; } catch (WorkflowException e) { System.out.println("Error occurred"); e.printStackTrace(); throw e; } } public static void main(String args[]) throws Exception { runClient(WorkflowServiceClientFactory.REMOTE_CLIENT); runClient(WorkflowServiceClientFactory.SOAP_CLIENT); } }
各タイプのクライアントには、ワークフロー・クライアント構成を設定する必要があります。次の場所に構成を設定できます。
JAXBオブジェクト
wf_client_config.xml
ファイル
プロパティ・マップ
プロパティ・マップは常に、wf_client_config.xml
ファイルの補足です。構成属性は、JAXBオブジェクトまたはプロパティ・マップによって上書きされる場合があります。構成ファイルはオプションです。構成ファイルがアプリケーションのクラスパスに見つからない場合は、プロパティ・マップが構成の主要ソースになります。
JAXBオブジェクトは、クライアント構成を定義するために使用できます。例32-12に、WorkflowServiceClientFactory
メソッドの使用方法を示します。
クライアント構成のXSDスキーマは、wf_client_config.xsd
ファイルにあります。
サーバー構成には、次の3タイプのクライアントが含まれている必要があります。
localClient
remoteClient
soapClient
すべてのクライアントを指定することをお薦めします。これは、リモート・クライアントやローカル・クライアントを持たないサービス(アイデンティティ・サービスなど)があるためです。このため、他のサービスでリモート・クライアントを使用する場合、アイデンティティ・サービスではSOAPサービスを使用します。
例32-13に、クライアント構成のXMLファイルの例を示します。この構成によって、default
という名前のサーバーが定義されます。このXMLファイルは、クライアント・アプリケーションのEARファイルに移動する必要があります。
例32-13 クライアント構成
<workflowServicesClientConfiguration> server name="default" default="true"> <localClient> <participateInClientTransaction>false</participateInClientTransaction> </localClient> <remoteClient> <serverURL>t3://myhost.us.oracle.com:7001</serverURL> <userName>weblogic</userName> <password>weblogic</password> <initialContextFactory>weblogic.jndi.WLInitialContextFactory </initialContextFactory> <participateInClientTransaction>false</participateInClientTransaction> </remoteClient> <soapClient> <rootEndPointURL>http://myhost.us.oracle.com:7001</rootEndPointURL> <identityPropagation mode="dynamic" type="saml"> <policy-references> <policy-reference enabled="true" category="security" uri="oracle/wss10_saml_token_client_policy"/> </policy-references> </identityPropagation> </soapClient> </server> </workflowServicesClientConfiguration>
WorkflowServicesClientConfigurationType
wscc
がnull
の場合は、wf_client_config.xml
にクライアント・プロパティを定義できます。
WorkflowServiceClientFactory getWorkflowServiceClient()
メソッドは常に、クラスパス内でwf_client_config.xml
を検索します。このファイルが検出されると、クライアント・プロパティがロードされます。
wf_client_config.xml
ファイルに定義した値は、プロパティ・マップまたはJAXBオブジェクトで定義したすべてのプロパティによって上書きされます。
接続プロパティを動的に指定する場合は、java.util.Map
を使用してプロパティを指定できます。これらのプロパティは、構成ファイル内の定義よりも優先されます。したがって、wf_client_config.xml
に定義した値は、これらのプロパティの値によって上書きされます。サーバーへの接続詳細を動的に指定しない場合は、マップでのプロパティ設定を省略し、ファクトリ・メソッドにNULL値を渡すことができます。この場合、構成ファイルwf_client_config.xml
はクライアント・アプリケーションのクラスパス内で検索されます。
構成ファイルがクラスパス内にある必要があるのは、構成ファイルから構成を取得する場合のみです。特定のクライアント・タイプの全設定をプロパティ・マップを使用して行う場合、このファイルの設定はオプションです。また、JAXBオブジェクトにも構成ファイルは必要ありません。これは、すべての設定がJAXBオブジェクトから取得されるためです。例32-14に詳細を示します。
例32-14 プロパティ・マップ
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory .REMOTE_CLIENT, (Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> ) null, null);
この場合、クライアントは、クラスパス内で検出されたwf_client_config.xml
の値を使用してサービスにアクセスします。構成ファイルがクラスパス内に見つからない場合に、サービス・タイプに応じた設定を指定しないと、ワークフロー例外がスローされます。プロパティ・マップがNULLで、構成ファイルが見つからない場合も、例外がスローされます。構成ファイルが見つからない場合に、クライアントでマップ内の一部のプロパティが省略されていると、実行時にサービス・コールが失敗します(プロパティは構成ファイルの補足です)。
クライアント・プロパティは、WorkflowServiceClientFactory
メソッドを使用して定義できます。例32-15に詳細を示します。
例32-15 WorkflowServiceClientFactoryメソッド
public static IWorkflowServiceClient getWorkflowServiceClient(String clientType,
Map<CONNECTION_PROPERTY, String> properties,
Logger logger) hrows WorkflowException
マップでプロパティのCONNECTION_PROPERTY
タイプを使用してクライアント・タイプを定義すると、例32-16に示すファクトリ・メソッドを使用できます。
例32-16 CONNECTION_PROPERTYタイプのファクトリ・メソッド
public static IWorkflowServiceClient getWorkflowServiceClient(Map<CONNECTION_ PROPERTY, String> properties, Logger logger) throws WorkflowException
例32-17に、クライアント・プロパティを設定するためにプロパティ・マップで使用できるIWorkflowServiceClientConstants.CONNECTION_PROPERTY
を示します。
例32-17 CONNECTION_PROPERTY
public enum CONNECTION_PROPERTY { MODE, // not supported , deprecated EJB_INITIAL_CONTEXT_FACTORY, EJB_PROVIDER_URL, EJB_SECURITY_PRINCIPAL, EJB_SECURITY_CREDENTIALS, // SOAP configuration SOAP_END_POINT_ROOT, SOAP_IDENTITY_PROPAGATION, // if value is 'saml' then SAML-token identity propagation is used SOAP_IDENTITY_PROPAGATION_MODE, // "dynamic' MANAGEMENT_POLICY_URI, // dafault value is "oracle/log_policy" SECURITY_POLICY_URI, // default value is "oracle/wss10_ saml_token_client_policy" // LOCAL and REMOTE EJB option TASK_SERVICE_PARTICIPATE_IN_CLIENT_TRANSACTION // default value is false //(task service EJB starts a new transaction) CLIENT_TYPE, DISCOVERY_OF_END_POINT, WSS_RECIPIENT_KEY_ALIAS, EJB_JNDI_SUFFIX // append to jndi name to used foreign jndi name };
注意: プロパティ・マップを使用する場合、IWorkflowServiceClientConstants.CONNECTION_PROPERTY.MODE を指定する必要はありません。このプロパティは、11g リリース1では非推奨です。 |
例32-18に、リモートEnterprise JavaBeansクライアントの例を示します。
例32-18 リモートEnterprise JavaBeansクライアントの例
Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_ PROPERTY,String>(); properties.put(CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_ FACTORY,"weblogic.jndi.WLInitialContextFactory"); properties.put(CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://myhost.us.oracle.com:7001"); properties.put(CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic"); properties.put(CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "weblogic"); IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.REMOTE_CLIENT, properties, null);
例32-19に、SOAPクライアントの例を示します。
例32-19 SOAPクライアントの例
Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_ PROPERTY,String>(); properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost:7001"); IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.SOAP_CLIENT, properties, null);
クライアントでは、クライアントがメッセージを記録するjava.util.logging.Logger
を必要に応じて渡すことができます。ロガーが指定されていない場合、ワークフロー・サービス・クライアントのコードは何も記録しません。例32-20は、ロガーをワークフロー・サービス・クライアントに渡す方法を示しています。
クライアント構成スキーマは、リリース10.1.3.x と11g リリース1の間で変更されています。リリース10.1.3.x から11g リリース1に移行するには、例32-21に示すユーティリティを使用します。
例32-21 構成移行ユーティリティ
java -classpath wsclient_extended.jar:bpm-services.jar oracle.bpel.services.workflow.client.config.MigrateClientConfiguration original_file [new_file];
original_file
は10.1.3.x のwf_client_config.xml
ファイルで、new_file
は新規の構成ファイル名(オプション)です。新規の構成ファイル名を指定しないと、元の構成ファイルがバックアップされ、wf_client_config.xml
ファイルが上書きされます。
この項では、Enterprise JavaBeansおよびSAMLトークン(SOAPクライアント用)を使用してアイデンティティを伝播する方法について説明します。
リクエストごとにワークフロー・コンテキストを取得すると、パフォーマンスが低下する場合があります。これは、アイデンティティ伝播の場合も同様です。SAMLトークンまたはEnterprise JavaBeansによるアイデンティティ伝播を使用する場合は、ユーザー名とパスワードにNULLを渡してクライアントを認証し、ワークフロー・コンテキスト・インスタンスを取得して、アイデンティティ伝播を使用せずにワークフロー・コンテキストを使用する別のサービス・コールを使用します。
クライアント・アプリケーションは、Enterprise JavaBeansアイデンティティ伝播を使用して、ユーザー・アイデンティティをサービスに伝播できます。クライアントのコードでは、ユーザー・アイデンティティを保護する必要があります。
アイデンティティ伝播を使用する場合、クライアントのコードでは、wf_client_config.xml
構成ファイルの<remoteClient>
要素の下にある<userName>
要素と<password>
要素を省略する必要があります。さらに、第32.6.1.2.3項「プロパティ・マップでのワークフロー・クライアント構成」で移入したMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY,String>
プロパティには、次のプロパティを移入しないでください。
IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL
IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS
アイデンティティ伝播が機能するのは、アプリケーションがOracle WebLogic Serverコンテナにデプロイされ、コンテナ・セキュリティによって保護されている場合、またはクライアントがカスタムJAASログイン・モジュールによって保護されている場合のみです。
エンド・ユーザーは、正しいユーザー名とパスワードを使用してクライアント・アプリケーションにログインします。クライアント・アプリケーションを使用するユーザーは、SOAアプリケーションで使用されるアイデンティティ・ストアで使用可能である必要があります。このため、クライアントの構成には、ワークフロー・サービスやOracle SOA Suiteで使用するアイデンティティ・ストアと同じアイデンティティ・ストアを使用することをお薦めします。これにより、ユーザーがクライアント側に存在している場合、そのユーザーはサーバー側にも存在していることが保証されます。
アイデンティティ・ストアの構成方法については、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。
カスタム・アイデンティティ・ストアとの相互作用の詳細は、次のURLを参照してください。
http://www.oracle.com/technology/products/id_mgmt/opss/index.html
SOAPクライアントを使用する場合は、Oracle WebサービスでサポートされているSAMLトークン・アイデンティティ伝播を使用できます。
この項では、アプリケーションがOracle WebLogic Serverコンテナ内に存在し、このコンテナによって保護されていることを前提にしています。
アイデンティティ伝播を有効にするには、クライアント構成で特別な伝播モードを指定する必要があります。
プロパティを使用する場合は、CONNECTION_PROPERTY.SOAP_IDENTITY_PROPAGATION
プロパティに値saml
を移入します。
動的SAMLトークン伝播モード
SAMLトークン・ポリシーは動的に提供されます(デフォルト)。例32-22に示すプロパティはオプションです。アイデンティティ伝播モードが設定されている場合、デフォルトでは動的モードで実行します。
SAMLトークンでは、デフォルトで、セキュリティ・ポリシーURIのoracle/wss10_saml_token_client_policy
に基づいて動的ポリシーが構成されます。ロギングは使用されません。デフォルトのポリシーURIを上書きするには、クライアントで例32-23に示すコードを追加します。
例32-23 デフォルトのポリシーURIの上書き
properties.put(CONNECTION_PROPERTY.SECURITY_POLICY_URI "oracle/wss10_saml_ token_client_policy"); properties.put(CONNECTION_PROPERTY.MANAGEMENT_POLICY_URI , "oracle/log_policy");
例32-24に、SAMLトークン動的クライアントを示します。
例32-24 トークン動的クライアント
Map<CONNECTION_PROPERTY,String> properties = new HashMap<ONNECTION_ PROPERTY,String>(); properties.put(CONNECTION_PROPERTY.SOAP_IDENTITY_PROPAGATION , "saml"); properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost.us.oracle.com:7001"); properties.put(ONNECTION_PROPERTY.SECURITY_POLICY_URI, "oracle/wss10_saml_token_ client_policy"); //optional properties.put(CONNECTION_PROPERTY.MANAGEMENT_POLICY_URI , "oracle/log_policy"); //optional IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.SOAP_CLIENT, properties, null);
ポリシーURIへのクライアント参照は、サーバー・ポリシーURIと一致する必要があります。そうでない場合、SAMLトークン伝播は失敗します。
構成ファイルでは、例32-25に示すように、<soapClient>
の<identityPropagation>
要素を使用して伝播モードを定義できます。
例32-25 <identityPropagation>要素
<soapClient> <rootEndPointURL>http://myhost.us.oracle.com:7001</rootEndPointURL> <identityPropagation mode="dynamic" type="saml"> <policy-references> <policy-reference enabled="true" category="security" uri="oracle/wss10_saml_token_client_policy"/> </policy-references> </identityPropagation> </soapClient>
詳細は、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』を参照してください。
ワークフロー・クライアントとともにoracle.wsm.security.util.SecurityConstants.ClientConstants.WSS_RECIPIENT_KEY_ALIAS
プロパティを使用できます。このプロパティは、アウトバウンド・メッセージ・タイプの暗号化に使用する受信者の公開鍵に別名を設定します。このプロパティを使用して、公開鍵の別名でワークフロー・サービスを保護します。このプロパティが関連するのは、SOAPクライアント・タイプでアイデンティティ伝播が使用される場合のみです。
公開鍵の別名を定義する場合は、クライアント・コードでWSS_RECIPIENT_KEY_ALIAS
値をマップに追加する必要があります。例32-26に詳細を示します。
例32-26 WSS_RECIPIENT_KEY_ALIASプロパティ
Map<CONNECTION_PROPERTY,String> properties = new HashMap<ONNECTION_ PROPERTY,String>(); properties.put(CONNECTION_PROPERTY.SOAP_IDENTITY_PROPAGATION , "saml"); properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost.us.oracle.com:7001"); properties.put(CONNECTION_PROPERTY.WSS_RECIPIENT_KEY_ALIAS,keyAlias); // where keyAlias is a key alias value properties.put(ONNECTION_PROPERTY.SECURITY_POLICY_URI, "oracle/wss10_saml_token_ client_policy"); //optional properties.put(CONNECTION_PROPERTY.MANAGEMENT_POLICY_URI , "oracle/log_policy"); //optional IWorkflowServiceClient client = WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.SOAP_CLIENT, properties, null);
クライアントでJAXBオブジェクトのWorkflowServicesClientConfigurationType
またはwf_client_config.xml
ファイルを使用する場合は、wssRecipientKeyAlias
と呼ばれるオプション要素をSOAPクライアントのidentityPropagation
要素の下に追加します。例32-27に詳細を示します。
例32-27 wssRecipientKeyAlias要素
<xsd:complexType name="identityPropagationType"> <xsd:sequence> <xsd:element name="policy-references" type="PolicyReferencesType" minOccurs="0" maxOccurs="1"/> <xsd:element name="wssRecipientKeyAlias" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="type" type="xsd:string" default="saml"/> <xsd:attribute name="mode" type="xsd:string" default="dynamic"/> </xsd:complexType>
資格証明ストアでの公開鍵の別名の作成方法および使用方法の詳細は、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』を参照してください。
アイデンティティ伝播を使用しないクライアント・アプリケーションには、そのクラスパスにbpm-services.jar
ファイルを指定する必要があります。11g リリース1の場合、クライアントのクラスパスには例32-28に示すファイルが必要です。
例32-28 クライアントJARファイル
${bea.home}/wlserver_10.3/server/lib/wlfullclient.jar ${bea.home}/AS11gR1SOA/webservices/wsclient_extended.jar ${bea.home}/AS11gR1SOA/soa/modules/oracle.soa.fabric_11.1.1/bpm-infra.jar ${bea.home}/AS11gR1SOA/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
wlfullclient.jar
ファイルは生成する必要があります。
wlfullclient.jar
は、次のように生成します。
cd ${bea.home}/wlserver_10.3/server/lib java -jar ../../../modules/com.bea.core.jarbuilder_1.3.0.0.jar
次のリストに、ヒューマン・タスクで利用可能なすべてのタスクの状態を示します。すべての状態の定数は、IWorkflowConstants.java
で定義されています。
String TASK_STATE_ALERTED = "ALERTED";
String TASK_STATE_ASSIGNED = "ASSIGNED";
String TASK_STATE_COMPLETED = "COMPLETED";
String TASK_STATE_DELETED = "DELETED";
String TASK_STATE_ERRORED = "ERRORED";
String TASK_STATE_EXPIRED = "EXPIRED";
String TASK_STATE_INFO_REQUESTED = "INFO_REQUESTED";
String TASK_STATE_OUTCOME_UPDATED = "OUTCOME_UPDATED";
String TASK_STATE_STALE = "STALE";
String TASK_STATE_SUSPENDED = "SUSPENDED";
String TASK_STATE_WITHDRAWN = "WITHDRAWN";
IWorkflowConstants.java
の詳細は、Oracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンスを参照してください。
この項では、データベース・ビューについて説明します。データベース・ビューを使用すると、レポート受信の問合せをOracle Workflowサービス・スキーマに対して実行できます。表32-22に、Oracle BPM Worklistで公開されるレポート、およびこれらのレポートに対応するデータベース・ビューを示します。
表32-22 レポートのビュー
既存のワークリスト・レポート | 対応するデータベース・ビュー |
---|---|
不参加タスク・レポート |
|
タスクのサイクル・タイム・レポート |
|
タスクの生産性レポート |
|
タスクの優先度レポート |
|
表32-23に、WFUNATTENDEDTASKS_VIEW
レポート・ビューを示します。
表32-23 不参加タスク・レポート・ビュー
名前 | タイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
脚注1NOT NULL列
例:
表32-24に、WFTASKCYCLETIME_VIEW
レポート・ビューを示します。
表32-24 タスクのサイクル・タイム・レポート・ビュー
名前 | タイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
脚注1NOT NULL列
例:
表32-25に、WFPRODUCTIVITY_VIEW
レポート・ビューを示します。
表32-25 タスクの生産性レポート・ビュー
名前 | タイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
脚注1完了済タスクの場合、状態はNULLです。問合せでは、decode(outcome, '', 'COMPLETED', outcome)
を使用します。
例: