操作前および操作後イベントのディスパッチと検証
操作前および操作後イベントのディスパッチと検証
作成、更新、または削除操作が開始されると必ず、操作前バリデータ Thing (PTC.SCA.SCO.PreActionValidator) が、データベースの更新が発生する前に呼び出されます。検証が正常に終了するとデータベースが更新され、操作が完了します。データベースが正常に更新された後、操作後ハンドラ Thing (PTC.SCA.SCO.PostActionHandler) が別のスレッドに呼び出されます。操作の実行には影響はありません。次の図は、操作前の検証が正常に終了した場合の、操作前バリデータと操作後ハンドラのディスパッチャシーケンスを示します。
検証がエラーになった場合、操作の完了は阻止され、データベースは更新されません。次の図は、操作前の検証がエラーになった場合のディスパッチャシーケンスを示します。
操作前バリデータ Thing (PTC.SCA.SCO.PreActionValidator) は操作前バリデータ Thing Template (PTC.SCA.SCO.PreActionValidatorThingTemplate) を継承します。同様に、操作後ハンドラ Thing (PTC.SCA.SCO.PostActionHandler) は操作後ハンドラ Thing Template (PTC.SCA.SCO.PostActionHandlerThingTemplate) を継承します。これらの Thing Template は、操作前および操作後イベントディスパッチをトリガーするために必要な Thing Shape を実装します。
作成、更新、または削除操作が開始されると、操作前バリデータの適切な操作前サービスがトリガーされます (「PreCreateAction」「PreUpdateAction」、または「PreDeleteAction」)。操作前サービスは、「CallServices」サービスを順に実行し、これによってデータ変更がレビューされて、操作前バリデータの構成が読み取られます。その操作およびデータシェイプ用に構成されたサービスがある場合は「CallServices」は適切な検証サービスをディスパッチします。検証のいずれかの部分がエラーになる場合、操作全体が完了できません。
作成、更新、または削除操作が完了すると、操作後ハンドラがトリガーされます (「PostCreateAction」「PostUpdateAction」、または「PostDeleteAction」)。操作後サービスは、次に「CallServices」サービスを実行し、これによってデフォルトの操作後ハンドラの構成を読み取られます。サービスがそのデータシェイプと操作のために構成されている場合は、その操作後サービスがディスパッチされます。
操作前バリデータと操作後ハンドラにサービスが提供されており、作業定義、シフト、またはサイトが作成または更新されるたびに実行されます。これらの実装は、ユーザー独自の操作前および操作後サービスを実装するためのモデルとして使用できます。
たとえば、作業定義の操作前および操作後サービスは次のように動作します。
操作前バリデータ Thing: 「WorkDefinitionPreCreate」「WorkDefinitionPreUpdate」「ValidateWorkDefinitionExecutionStatus」、および「EnumerationValidation」
作業定義が作成または更新され、実行状態が指定されると、実行状態が検証されるまで操作は実行されません。実行される操作に応じて、「WorkDefinitionPreCreate」または「WorkDefinitionPreUpdate」サービスが呼び出されます。その操作は、「ValidateWorkDefinitionExecutionStatus」サービスを順に呼び出し、これによって「EnumerationValidation」サービスを呼び出します。複数の作業定義が 1 回の操作で作成または更新される場合、その中の少なくとも 1 つに無効な実行状態が指定されていると、操作全体が完了できません。検証サービスとあらゆるエラーの詳細は、「ログレベル」「デバッグ」に設定した後、「監視」 > 「ScriptLog」で確認できます。検証がエラーになった場合に例外を発生させる方法の例は、「EnumerationValidation」サービスを参照してください。
デフォルトの操作後ハンドラ Thing: 「WorkDefinitionPostCreate」「WorkDefinitionPostUpdate」「LogWorkDefinitionExecutionStatusChange」
作業定義が正常に作成または更新されると、実行された操作に応じて「WorkDefinitionPostCreate」または「WorkDefinitionPostUpdate」サービスが呼び出されます。その操作は「LogWorkDefinitionExecutionStatusChange」サービスを順に呼び出し、操作に関する詳細ログを作成します。これらの詳細には、操作を担当するエージェント、作成または更新された作業定義の UID、および実行状態 UID と値があります。これらの詳細は、「ログレベル」「デバッグ」に設定された後、「監視」 > 「ScriptLog」で確認できます。
操作前および操作後サービスの追加
PTC.SCA.SCO.PreActionValidator Thing および PTC.SCA.SCO.PostActionHandler Thing は編集できません。新しい操作前または操作後サービスを追加するには、適切な Thing を複製し、この複製 Thing に新しいサービスを追加し、システムのデータベース Thing のコンフィギュレーションを更新して複製 Thing を指すようにします。
追加の操作前または操作後サービスを付加するには:
1. 追加の操作前サービスの場合、PTC.SCA.SCO.PreActionValidator Thing を複製します。追加の操作後サービスの場合、PTC.SCA.SCO.PostActionHandler Thing を複製します。この手順では、これらの複製 Thing はそれぞれ、PTC.SCA.SCO.PreActionValidator_Duplicate Thing および PTC.SCA.SCO.PostActionHandler_Duplicate Thing として参照されます。
2. PTC.SCA.SCO.PreActionValidator_Duplicate Thing に対して操作前サービスを作成します。PTC.SCA.SCO.PostActionHandler_Duplicate Thing に対して操作後サービスを作成します。
3. PTC.SCA.SCO.PreActionValidator_Duplicate Thing または PTC.SCA.SCO.PostActionHandler_Duplicate Thing の「コンフィギュレーション」ページで、「ActionConfigurationSettings」コンフィギュレーションテーブルに適宜新しいエントリを追加します。
「DataShapeName」 - この操作前または操作後サービスが適用されるデータシェイプの名前をサーチおよび選択します。
「操作」 - 操作を入力: 「Create」「Update」、または「Delete」。値は大文字小文字を区別し、ここで示される通り正確に入力する必要があります。
「ThingName」 - たとえば PTC.SCA.SCO.PreActionValidator_Duplicate または PTC.SCA.SCO.PostActionHandler_Duplicate など、使用するサービスが属する Thing 名をサーチおよび選択します。
「ServiceName」「CallServices」によりディスパッチされるサービスの名前を入力します。実装が複数のサービスから構成されている場合は、別のサービスを呼び出す最初のサービスを入力します。値は大文字小文字を区別し、サービスの名前と正確に一致する必要があります。
* 
実装には一連のサービスを含めることができますが、「ActionConfigurationSettings」コンフィギュレーションテーブルで指定され、「CallServices」によりディスパッチされたサービスは、データシェイプ PTC.SCA.SCO.DataChange のインフォテーブルである「DataChanges」という名前の入力パラメータを含む必要があります。
4. 「追加」をクリックし、次に「保存」をクリックしてコンフィギュレーションの変更を保存します。
5. PTC.SCA.SCO.PostgresDatabasePTC.SCA.SCO.MSSQLDatabase などの、システムで設定されているデータベース Thing に移動します。
* 
システムで設定されているデータベース Thing は、起動ポイントコンフィギュレーション Thing (PTC.Factory.C_LaunchPointConfigurationThing_[リリースバージョン]) の「コンフィギュレーション」ページで確認できます。
6. データベース Thing の「コンフィギュレーション」ページで、「DatabaseValidationConfigurationTable」の下の「PreActionValidator」および「PostActionHandler」フィールドを更新し、ステップ 1 で作成した複製 Thing を指すようにします。
7. 「保存」をクリックしてデータベース Thing の設定変更を保存します。