プロセスの実行

ここでは、実行時にプロセスがどのように動作するかを説明します。

プロセスインスタンス

プロセスが開始されるたびに、AEM forms サーバーによってそのプロセスが実行されます。プロセスの 1 回の実行を プロセスインスタンス と呼びます。プロセスインスタンスには一意の識別子が付与され、固有のプロセスデータが関連付けられます。

例えば、あるプロセスでは、クレジットカード明細書を作成するために、情報をデータベースから取得し、フォームとマージして、顧客への郵送用に明細書を印刷するとします。このプロセスは月 1 回、顧客ごとに開始されます。このプロセスが開始されるたびに、新しいプロセスインスタンスが作成されます。プロセスデータには、データベースから取得されたデータが含まれていますが、このデータは顧客ごとに異なります。

プロセスに対する変更

アクティブ化されたプロセスに変更を加えると、そのプロセスに関連付けられたすべてのプロセスインスタンスが変更の影響を受けます。

例えば、作成中のプロセスをテストするために、開発環境内で多数のプロセスを開始したとします。その後で、プロセスダイアグラム上の操作のプロパティに変更を加えます。この変更を保存すると、プロセスインスタンスのうち、その操作よりも先に進んでないものすべてに変更の影響が及びます。

新しいプロセス

プロセスのライフサイクル

プロセスが開始されてプロセスインスタンスが作成されると、プロセスのメインブランチに対応するブランチインスタンスが作成されます。続いて、このブランチに属する操作が順番に、プロセスのデザインに従って実行されます。

1 つの操作の実行が完了すると、その操作を始点とするルートの評価が行われます。ルートの評価によって、次に実行される操作が決まります。1 つのブランチのすべての操作が完了すると、そのブランチは完了となります。

ルート評価の途中でエラーが発生した場合は、そのルートが属するブランチが停止します。操作の実行中にエラーが発生した場合は、その操作が停止します。ブランチまたは操作が停止したときは、エラーの原因を修正した後で、管理コンソールを使用してブランチまたは操作を再開することができます。

短時間のみ有効なプロセスと長期間有効なプロセス

プロセスの Type プロパティを、「短時間のみ有効」または「長期間有効」に設定することができます。基本的に、短時間のみ有効なプロセスに実行時に必要となるサーバーリソースは、長期間有効のプロセスに比べて少なくなります。可能であれば、プロセスは短時間のみ有効となるように設定してください。

ただし、指定した値は、実行時にプロセスを実行する方法および保存されるデータに影響を及ぼします。また、プロセスのメインブランチのタイプもこの値によって決定するほか、ゲートウェイ要素を使用してプロセスダイアグラムに追加できるブランチのタイプも決定します。プロセスの Type プロパティを設定するときは、これらの要因すべてを考慮する必要があります。

注意: プロセスデータモデルの id ノードに格納される値は、短時間のみ有効なプロセスの場合は常に -1 となります。長期間有効なプロセスの場合は、この値は英数字文字列です( プロセスデータモデル を参照)。

実行

プロセスの実行に要する時間の長さは、Type プロパティを設定するときに考慮する必要のある要因の 1 つです。

  • プロセスを「短時間のみ有効」に設定するのは、実行に要する時間がごく短い(ミリ秒単位である)場合です。短時間のみ有効なプロセスは、1 つのトランザクションで実行されます( トランザクション を参照)。実行時間が短ければ、トランザクションの中でシステム障害が発生するリスクは低くなります。

  • プロセスを「長期間有効」に設定するのは、実行に長時間かかる操作がある場合です。長期間有効プロセスの中の操作は、それぞれ別のトランザクションで実行されます。

  • プロセスを「長期間有効」に設定する必要があるのは、プロセスの進行が、そのプロセスの実行とは独立して(プロセスの外部で)動作する(非同期実行)リソースからのメッセージングによって決まる場合です。

    例えば、プロセスで User サービスまたはイベントレシーバーを使用する場合は、「長期間有効」に設定してください。

  • User サービスの Assign Task 操作が完了するのは、関連付けられたタスクがユーザーによって Workspace を使用して送信されたときです。

  • イベントレシーバーとイベントスタートポイントは、イベントがスローされるのを待ってプロセスを続行します。

クライアントの起動

プロセスの Type プロパティは、クライアントソフトウェアとプロセスインスタンスとがどのように相互作用するかに影響を及ぼします。

  • クライアントソフトウェアが短時間のみ有効なプロセスを起動すると、クライアントソフトウェアはプロセスインスタンスが完了するまで待ってから自身の実行を続行します。プロセスインスタンスが完了すると、ただちにプロセス出力データがクライアントに返されます。

  • クライアントソフトウェアが長時間有効なプロセスを起動すると、クライアントソフトウェアの実行はプロセスインスタンスの実行中も続行します。クライアントソフトウェアは、プロセス完了後にプロセス出力データを取得する必要があります。

データ永続化

プロセスデータがデータベースに保存されるかどうかは、プロセスの Type プロパティによって決まります。プロセスの操作間でデータを受け渡す場合は、そのデータをデータベースに保存する必要があります。また、組織によっては、プロセスインスタンスの中で発生したあらゆるものの記録を取ることがポリシーで定められていることがあります。それ以外の場合は、詳細な記録を残すことよりも記憶容量の節約が重要かどうかを開発者が決定できます。

  • プロセスが長期間有効と設定されるのは、操作間でデータの受け渡しが必要である場合や、プロセスインスタンスの完全な記録を残す必要がある場合です。

  • プロセスが短時間のみ有効と設定されるのは、操作間でデータの受け渡しをしない場合や、プロセスインスタンスの記録が必要ない場合です。

    プロセスのタイプ

    保存される情報

    長期間有効

    すべてのプロセス情報が保存されます。

    • プロセスインスタンスのデータ

    • ブランチインスタンスのデータ

    • 操作インスタンスのデータ

    短時間のみ有効

    プロセスの情報は保存されません。

    注意: 短時間のみ有効なプロセスの情報はデータベースに保存されないので、実行時に使用されるリソースは少なくなり、したがって実行効率が向上します。

ブランチのタイプ

プロセスが長期間有効か短時間のみ有効かによって、サポートされるブランチのタイプは次のように異なります。

  • 短時間のみ有効なプロセスでサポートされるのは、トランザクションブランチのみです。短時間のみ有効なプロセスのメインブランチは、トランザクションブランチです。

  • 長期間有効なプロセスでは、非同期、同期およびトランザクションのブランチがサポートされます。

    注意: 短時間のみ有効なプロセスにはゲートウェイ要素を追加できません。2 つ以上のブランチを並行して実行するには、長期間有効なプロセスを使用する必要があります。

トランザクション伝達

短時間のみ有効なプロセスの場合は、プロセスがそのプロセス専用のトランザクションを実行するか、プロセスを開始したクライアントソフトウェアのトランザクションの中で実行されるかが、トランザクション伝達によって指定されます。プロセスのトランザクション伝達に関して指定できる値は次のとおりです。

必須:
プロセスインスタンスは、クライアントのトランザクションの中で実行されます。クライアントにトランザクションが関連付けられていない場合は、例外が発生します。

調整しない:
クライアントがトランザクションの中で実行されている場合は、例外が発生します。クライアントにトランザクションが関連付けられていない場合、プロセスを実行するためにトランザクションが作成されることはありません。

Not Supported:
クライアントのトランザクションは、プロセスインスタンスの実行が終了するまで一時停止されます。プロセスインスタンスが完了すると、クライアントのトランザクションが再開します。クライアントにトランザクションが関連付けられていない場合、新しいトランザクションが作成されることはありません。

必須:
プロセスインスタンスは、クライアントのトランザクションの中で実行されます。クライアントにトランザクションが関連付けられていない場合、プロセスを実行するための新しいトランザクションが作成されます。

Requires new:
クライアントのトランザクションは一時停止されます。プロセスインスタンスは、新しいトランザクションの中で実行されます。プロセスインスタンスが完了すると、クライアントのトランザクションが再開します。クライアントにトランザクションが関連付けられていない場合、プロセスを実行するための新しいトランザクションが作成されます。

Supports:
プロセスインスタンスは、クライアントのトランザクションの中で実行されます。クライアントにトランザクションが関連付けられていない場合、プロセスを実行するために新しいトランザクションが作成されることはありません。

プロセスの Transaction Timeout プロパティで指定された時間内にトランザクションが完了しない場合は、タイムアウトとなります。