ドキュメント開始またはフォルダ開始プロセスの作成
「ドキュメント開始」イベントを使用して、ドキュメントによって開始できるプロセスをモデル化します。 「フォルダ開始」イベントを使用して、フォルダによって開始されるプロセスをモデル化します。
ドキュメント開始プロセスまたはフォルダ開始プロセスを作成する前に、Oracle Content Managementがあり、そのサービスとOracle Integrationの間に「接続を構成」が必要です。
Oracle Content Management統合を有効にすることで、各プロセス・インスタンスのOracle Content Managementに自動的に作成されるフォルダを定義し、関連するドキュメントの事前定義の組織を提供できます。 また、タスク・レベルでアクセス・タイプを上書きして、ビジネス・ニーズに応じて特定のタスクのフォルダまたはドキュメントに適切な権限を定義することもできます。 たとえば、タスクに関連付けられた機密文書やフォルダをユーザーが表示しないようにすることができます。
統合に成功するためには、次のアクセス要件に注意してください:
-
Oracle Integrationで構成されているOracle Content Managementユーザーは、Oracle Content Managementに構成されているフォルダ(つまり、受信ドキュメントのフォルダ)への完全なアクセス権を持ち、プロセスを強制終了できる必要があります。
-
フォルダ開始プロセス(つまり、「フォルダ開始」イベントを含むプロセス)の場合、Oracle Integrationに構成されているOracle Content Managementユーザーは、Oracle Integrationのフォルダにアクセスするために、そのフォルダへのマネージャ・アクセス権を持っている必要があります。 たとえば、「タスクの詳細」ページと「プロセス・トラッキング」ページのフォルダを表示したり、外部アプリケーションにProcess UIコンポーネントを埋め込むときにフォルダにアクセスしたり、Process Mobileアプリケーションのフォルダを表示するには、マネージャへのアクセスが必要です。
-
Oracle Content Managementで構成されたOracle Integrationユーザーには、フォルダのプロセス・リストでプロセスを表示し、新規ドキュメントの到着時にプロセス・インスタンスを開始できるように、プロセス・イニシエータ・ロールが付与されている必要があります。
ドキュメントまたはフォルダによって開始できるプロセスを設計するには:
-
Oracle Integrationで「入力ドキュメント」または「入力フォルダ」を定義します。
-
ドキュメント開始イベントまたはフォルダ開始イベントを持つプロセスをモデル化します。
-
開始イベントを、作成した対応する受信ドキュメントまたはフォルダにマップする実装をカスタマイズします。 実装オプションを使用すると、ドキュメントまたはフォルダがユーザーに公開される方法を定義できます。
-
タスク・レベルで文書またはフォルダにアクセスできるロールを変更します(オプション)。
-
Oracle Content Managementのフォルダを構成して、ドキュメントの到着時にプロセスを開始します。
あるいは、「プロセス・インスタンスをインスタンス化するためのREST API」を使用してすべての入力値を指定することもできます。
入力ドキュメントまたはフォルダの定義
受信ドキュメントまたはフォルダを定義するには、モデリングしているプロセス・アプリケーションを開き、「ドキュメント」をクリックします。 「ドキュメント」ページには、すでに定義されている受信文書と受信フォルダが一覧表示されます。
新しい受信ドキュメントまたはフォルダを作成するには、「新規」
をクリックし、適切なタイプを選択して名前を入力し、デフォルトのアクセス権(権限)を選択します。
ドキュメントまたはフォルダ開始イベントを使用したモデル・プロセス
次に、ドキュメントの開始またはフォルダの開始イベントを持つプロセスを作成します。 現在のリリースでは、プロセスの作成方法にいくつかの制限があります。 必要な手順に従わないと、プロセスが無効になります。
注意:
Elementsパレットからドキュメントの開始またはフォルダの開始イベントを追加する必要があります。 プロセスに追加する最初の開始イベントは1つだけで、サポートされます。 このリリースでは、複数の開始イベントはサポートされていません。 また、「タイプの変更」オプションを使用して開始イベントを変更したり、最初の開始イベントを削除したりしないでください。 どちらの操作でも、プロセスが無効になります。ドキュメントの開始またはフォルダの開始イベントを持つプロセスをモデル化するには:
-
「アプリケーション・ホーム」タブで、「プロセス」をクリックします。
-
「新規プロセス」
をクリックして、「プロセスの作成」ダイアログを開きます。
-
「None」を選択します。
ノート:
必ず「なし」を選択してください。 後でこの空の開始イベントを変更します。 -
プロセスの名前を入力し、「すぐに開始」チェックボックスが選択されていることを確認して、「作成」をクリックします。
キャンバスには、プロセスの開始イベントと終了イベントが表示されます。
-
要素パレットの「イベント」をクリックします。
-
「ドキュメント開始」イベントまたは「フォルダ開始」イベントのいずれかをキャンバスにドラッグします。
-
新しいドキュメントまたはフォルダの開始イベントから終了イベントまでのシーケンス・フローを追加します。
-
空の開始イベントを削除します。
-
プロセスの変更と定義を続けます。 プロセスをテストしてデプロイしてください。
すべてのユーザーにドキュメント開始またはフォルダ開始プロセスの開始を許可
有効なユーザーがドキュメントをアップロードしてプロセスを開始できるようにするには:
-
プロセスを開きます。
-
ドキュメントまたはフォルダの開始イベントがあるスイムレーンで、ロール名をクリックし、「編集」
をクリックします。
-
「ロール」フィールドで、「自動ハンドラ」を選択します。
ドキュメント開始またはフォルダ開始プロセスのカスタマイズ
プロセスをモデリングした後、プロセス内に開始ドキュメントまたはフォルダを追加してカスタマイズすることができます。
プロセスで、プロセス・ダイアグラムの「ドキュメント開始」または「フォルダ開始」イベントをクリックします。 表示されたアイコンから「メニュー」
をクリックし、次に「プロパティを開く」を選択します。 「プロパティ」ペインがプロセス・ダイアグラムの下に表示されます。
受信したドキュメントまたはフォルダをどのように処理するかを定義します:
-
ホーム内: この値を選択すると、ドキュメントのロケーションはそのままです。 必要に応じて、受信文書またはフォルダをあらかじめ定義された文書またはフォルダの1つ(ドロップダウン・リストを開く)で管理して管理することもできます。
この特定のプロセスに適した定義済みの受信ドキュメントまたはフォルダがない場合は、「新規」
をクリックして作成します。
-
管理対象外: ドキュメントまたはフォルダは、現在のプロセスで無視されます。 Oracle Integrationは、実行時にアン・マネージ文書やフォルダを表示しません。 入ってくるドキュメントやフォルダを処理するのはプロセス・モデラーの責任です。 たとえば、受信フォルダまたはドキュメントを別のロケーションに移動する場合は、
IdまたはTypeなどの「プロパティを取得」に対するXPath式を使用して、プロパティ情報をRESTサービスに渡すことができます。
タスク・レベルでのアクセスのカスタマイズ
あなたのプロセスでは、フロー・ダイアグラムのユーザー・タスクをクリックします。 表示されているアイコンから「メニュー」
をクリックし、次に「プロパティを開く」を選択します。
「プロパティ」ペインがプロセス・ダイアグラムの下に表示されます。
「オーバーライド」をクリックして、定義されている要素の現在のアクセス許可をカスタマイズします。
フォルダの構成
ドキュメントがフォルダにアップロードされたときにプロセスを自動的に開始するには、Oracle Content Managementのフォルダを構成して、ドキュメントの到着時にプロセスを開始する必要があります:
-
Oracle Content Managementにサインインします。
-
フォルダを選択します。
-
メニュー・バーから「プロパティ」を選択します。
-
「文書到着時にプロセスを開始」設定を有効にします。
-
リストからプロセスを選択します。
-
「保存」をクリックします。
フォルダとそのサブフォルダは、Oracle Integrationインタフェース内で使用できるようになりました。 フォルダ内のファイルやフォルダにアップロードされた新しいファイルを変更すると、そのフォルダに関連付けられたプロセスがトリガーされます。 サブフォルダに継承されたプロセスは上書きできますが、プロセスとの関連付けを無効にすることはできません。
ファイルがOracle Content ManagementからOracle Integrationで使用するために構成されたフォルダにアップロードされると、そのフォルダに関連付けられているタスクにそのファイルが使用されます。 Oracle Integrationのユーザーは、承認などのファイルに対するアクションを実行できます。 タスクのステップが完了したら、定義されたプロセスに従ってファイルを移動または管理できます。
Oracle Content Managementがプロセスを開始すると、プロセスを起動するために送信されるペイロードには次の情報が含まれます:
-
ドキュメントID
-
ドキュメント名
-
プロセスを開始したユーザーのID
-
タイプ
-
ロール(後続のアプリケーション・リンクを生成するために使用されるロールを示します)
-
バージョン
次の例では、Oracle Integrationのフォームに表示するドキュメントIDおよびドキュメント名のみを使用します。 また、ドキュメントIDは、Oracle Content Management内のファイルをタスク・フォルダに移動またはコピーするためのREST API呼出しに使用されます。
{
"processDefId":"testing~UserFileApproval!1.0~FormApprovalProcess",
"operation": "startEvent",
"params": {
"id": "D2806600E495B744E66BF3981212FF6185DE89BE6812",
"type": "d",
"name": "document-name",
"startedBy": "user-id",
"role": "role that should be used to generate subsequent applinks",
"version": "version"
}
}ノート:
プロセスの最初の操作はstartイベントでなければなりません。 それ以外の場合、プロセス・アプリケーションは500のエラーをOracle Content Managementに戻します。
開発者は、開発するプロセスの次の要件に注意する必要があります:
-
Oracle Content Management Startイベントを使用するプロセスである必要があります。
-
プロセスをデプロイするときは、ユーザーがプロセスをトリガーする権限を持つように、統合を有効にするために指定したユーザーとプロセスを共有する必要があります。
-
タスクを開始したユーザーとしてファイルをアップロードしたユーザーの場合、プロセスでは、startedbyフィールドに渡された値をイニシエータの表示名として使用する必要があります。
-
フォルダのプロセス統合を有効にする場合は、Oracle Integrationで統合を有効にするために使用したOracle Content Managementユーザーとこのフォルダを共有する必要があります。
REST APIコールを使用したプロセスのインスタンス化
ほとんどの場合、ドキュメント開始イベントまたはフォルダ開始イベントを使用して、ドキュメントまたはフォルダによって開始できるプロセスをモデル化することが適切です。 かわりに、REST APIを使用してプロセス・インスタンスをインスタンス化し、すべての入力値を指定することもできます。
ドキュメントまたはフォルダによって開始されるプロセスのフェッチ
ドキュメントによって開始できるプロセスのみをフェッチするには、プロセス定義APIのinterfaceFilterフィルタでdoc値を使用します。
GET /ic/api/process/v1/process-definitions?interfaceFilter=doc
フォルダによって開始できるプロセスのみをフェッチするには、プロセス定義APIのinterfaceFilterフィルタでfolder値を使用します。
GET /ic/api/process/v1/process-definitions?interfaceFilter=folder
プロセスの場合と同様に、Oracle Integrationは、同じ入力引数セットに対してプロセス・インスタンスがすでに開始されているかどうかを検証しません。 エンド・ユーザーは、指定のドキュメントまたはフォルダの詳細に対して、任意の数のプロセス・インスタンスをインスタンス化できます。
このプロセスをインスタンス化する権限/ロールを持つユーザーは、前述のAPIを起動して、ドキュメントまたはフォルダによって開始されるプロセスのリストの問合せおよびフェッチを実行できます。
プロセス・インスタンスのインスタンス化
ドキュメント開始またはフォルダ開始プロセスを含め、プロセス・インスタンスをインスタンス化するには、標準APIを使用します。
POST /ic/api/process/v1/processes
ドキュメントまたはフォルダのID、タイプおよび名前を定義する様々なパラメータを渡します。
たとえば:
{
"processDefId":"process-definition-id",
"operation": "startEvent",
"params": {
"id": "document-id|folder-id",
"type": "d|f",
"name": "document-name|folder-name",
"startedBy": "user",
"role": "contributor"
}
}入力パラメータtypeには、ドキュメントの"d"またはフォルダの"f"を入力できます。
現在、入力パラメータroleは無視されます。 すべてのプロセス参加者は、プロセス・インスタンスを開始したドキュメントまたはフォルダへのコントリビュータ・ロール・アクセス権を自動的に取得します。
すべてのプロセスと同様に、開始スイムレーン・ロールのメンバーであるユーザーのみがプロセスを開始できます。
サンプル・コード
cURLコマンドを使用して、プロセスREST APIを起動できます。 たとえば:
curl.sh
host=localhost
port=7001
user="user_name:password"
curl -H "Content-Type:application/json" -u $user -d @input.json http://$host:$port/ic/api/process/v1/processes次に、必要なインタフェースに準拠するinput.jsonのサンプルを示します。 typeパラメータで、"d"はドキュメントを示し、"f"はフォルダを示します。
input.json
{
"processDefId":"default~DocumentStart!2.0~Process1",
"operation": "startEvent",
"params": {
"id": "document-id|folder-id",
"type": "d|f",
"name": "document-name|folder-name",
"startedBy": "user",
"role": "contributor"
}
}次に、このAPIによって返されるレスポンスのサンプルを示します。
JSON response
{
"levels": 0,
"links": [
{
"href": "http://abc01abc.example.com:7001/ic/api/process/v1/processes/19",
"length": 0,
"rel": "self"
},
{
"href": "http://abc01abc.example.com:7001/ic/api/process/v1/processes/19/audit",
"length": 0,
"rel": "audit"
}
],
"title": "Instance #19 of Process1",
"processId": "19",
"processDefId": "default/DocumentStart!2.0/Process1g",
"processName": "Process1",
"priority": 0,
"owner": "DocumentStart.ProcessOwner",
"creator": "myname",
"state": "OPEN"
}