一部のイベント トピックはブロック イベントをサポートします。拡張性サブスクリプションの動作は、トピックでこれらのイベント タイプがサポートされるかどうか、またサブスクリプションの設定方法によって異なります。

Automation Assembler 拡張性サブスクリプションでは、非ブロック イベント トピックとブロック イベント トピックの 2 種類のイベント トピックを使用できます。イベント トピック タイプにより、拡張性サブスクリプションの動作が定義されます。

非ブロック イベント トピック

非ブロック イベント トピックでは、非ブロック サブスクリプションの作成のみが許可されます。非ブロック サブスクリプションは非同期的にトリガされるため、サブスクリプションのトリガが、設定された順序どおりに処理されないことがあります。

ブロックに関するイベント トピック

一部のイベント トピックはブロックをサポートします。サブスクリプションがブロックとしてマークされている場合、設定された条件を満たすすべてのメッセージは、ブロック サブスクリプションの実行可能な項目が実行されるまで、条件に一致する他のサブスクリプションによって受信されることはありません。

ブロック サブスクリプションは優先順位のとおりに実行されます。最も高い優先順位の値は 0(ゼロ)です。1 つのイベント トピックに優先順位レベルが同じ 2 つ以上のブロック サブスクリプションがある場合、サブスクリプションの名前に基づいてアルファベットの逆順に実行されます。すべてのブロック サブスクリプションが処理されたら、メッセージは、すべての非ブロック サブスクリプションに同時に送信されます。ブロック サブスクリプションは同期的に実行されるため、後続のサブスクリプションが通知される際には、変更されたイベント ペイロードに更新済みのイベントが含まれます。

ブロック イベント トピックを使用して、相互に依存する複数のサブスクリプションを管理できます。

たとえば、2 つのプロビジョニング ワークフロー サブスクリプションがあり、2 つ目のサブスクリプションが 1 つ目のサブスクリプションの結果を使用する場合について考えます。1 つ目のサブスクリプションは、プロビジョニング時にプロパティを変更し、2 つ目のサブスクリプションはファイル システム内の新しいプロパティ(マシン名など)を記録します。ChangeProperty サブスクリプションの優先順位は 0 で、RecordProperty は、2 つ目のサブスクリプションが 1 つ目のサブスクリプションの結果を使用するため優先順位が 1 になります。マシンのプロビジョニングが開始されると、ChangeProperty サブスクリプションが実行されます。RecordProperty サブスクリプションの条件はプロビジョニング後の条件に基づくため、RecordProperty サブスクリプションはイベントによってトリガされます。ただし、ChangeProperty ワークフローはブロック ワークフローであるため、完了するまでイベントは受信されません。マシン名が変更されて最初のワークフロー サブスクリプションが終了したら、2 つ目のワークフロー サブスクリプションが実行され、ファイル システムのマシン名が記録されます。

実行可能な項目のリカバリ

ブロック イベント トピックの場合は、実行可能な項目のリカバリをサブスクリプションに追加できます。サブスクリプション内の実行可能な項目のリカバリは、プライマリの実行可能な項目に障害が発生した場合に実行されます。たとえば、プライマリの実行可能な項目が ServiceNow などの CMDB システムにレコードを作成するワークフローであるワークフロー サブスクリプションを作成できます。ワークフロー サブスクリプションが失敗した場合でも、一部のレコードが CMDB システム内に作成される可能性があります。この場合、実行可能な項目のリカバリを使用することにより、障害が発生した実行可能な項目によって CMDB システムに残されたレコードをクリーンアップできます。

相互に依存する複数のサブスクリプションを含むユースケースでは、実行可能な項目のリカバリに ebs.recover.continuation プロパティを追加することが考えられます。このプロパティを使用して、現在のサブスクリプションが失敗した場合に拡張性サービスがチェーン内の次のサブスクリプションを続行する必要があるかどうかを指定できます。