構築ブロック > 共通の構築ブロック > データベース接続構築ブロック > 操作前、操作中、操作後のイベントのディスパッチと検証
操作前、操作中、操作後のイベントのディスパッチと検証
作成、更新、または削除操作が開始されるたびに、操作前バリデータ Thing (PTC.DBConnection.PreActionValidator) が、データベースの更新が発生する前に呼び出されます。検証に成功すると、データベースが更新され、操作中プロセッサ Thing (PTC.DBConnection.OnActionProcessor) が呼び出されます。データベースが正常に更新された後、操作後ハンドラ Thing (PTC.DBConnection.PostActionHandler) は、操作の実行に影響を与えることなく、別のスレッドで呼び出されます。
次の図は、操作前バリデータ、操作中プロセッサ、操作後ハンドラの設計の概要を示しています。
操作前バリデータと操作後ハンドラの高レベル設計の図。
次の図は、操作前の検証が成功した場合の、操作前バリデータ、操作中プロセッサ、操作後ハンドラのディスパッチャシーケンスを示しています。
操作前の検証が成功した場合の、操作前バリデータと操作後ハンドラのディスパッチャシーケンスを示している図。
検証が失敗すると、操作は完了せず、データベースは更新されません。次の図は、操作前の検証がエラーになった場合のディスパッチャシーケンスを示しています。
操作前の検証が失敗した場合の、ディスパッチャシーケンスを示している図。
操作前バリデータ Thing (PTC.DBConnection.PreActionValidator) は、操作前バリデータ Thing Template (PTC.DBConnection.PreActionValidator_TT) を継承します。操作中プロセッサ Thing (PTC.DBConnection.OnActionProcessor) は、操作中プロセッサ Thing Template (PTC.DBConnection.OnActionProcessor_TT) を継承します。同様に、操作後ハンドラ Thing (PTC.DBConnection.PostActionHandler) は、操作後ハンドラ Thing Template (PTC.DBConnection.PostActionHandler_TT) を継承します。これらの Thing Template は、操作前、操作中、操作後のイベントディスパッチをトリガーするために必要な Thing Shape を実装します。
作成、更新、または削除の操作が開始されると、操作前バリデータの適切な操作前サービスがトリガーされます (PreCreateActionPreUpdateAction、または PreDeleteAction)。操作前サービスは、CallServices サービスを順に実行し、これによってデータ変更がレビューされて、操作前バリデータのコンフィギュレーションが読み取られます。その操作およびデータシェイプ用に設定されたサービスがある場合は CallServices は適切な検証サービスをディスパッチします。検証の一部が失敗すると、操作全体は成功しません。
操作前の検証が成功すると、データベースが更新され、操作中サービスがトリガーされます (OnCreateActionOnDeleteActionOnUpdateAction)。次に、操作中サービスは CallServices サービスを実行して、操作中プロセッサのコンフィギュレーションを読み取ります。そのデータシェイプと操作にサービスが設定されている場合、その操作中サービスはディスパッチされます。
作成、更新、または削除の操作が完了すると、操作後ハンドラがトリガーされます (PostCreateActionPostUpdateAction、または PostDeleteAction)。その後、操作後サービスは CallServices サービスを実行し、これによってデフォルトの操作後ハンドラのコンフィギュレーションが読み取られます。サービスがそのデータシェイプと操作のために設定されている場合は、その操作後サービスがディスパッチされます。
操作前バリデータと操作後ハンドラにサービスが提供されており、作業定義、シフト、またはサイトが作成または更新されるたびに実行されます。これらの実装は、ユーザー独自の操作前および操作後サービスを実装するためのモデルとして使用できます。
操作前サービスの例
このセクションでは、ジョブオーダー操作を例として使用して、操作前サービスがどのように動作するかについて説明します。
PTC.JobOrderImpl.Manager Thing に、JobOrderPreCreateJobOrderPreUpdateValidateDispatchStatusValidateJobOrderSite のサービスがあります。
ジョブオーダーが作成または更新され、実行状態が指定されると、実行状態が検証された後に、操作は継続できるようになります。実行される操作に応じて、JobOrderPreCreate または JobOrderPreUpdate サービスが呼び出されます。その操作は、次に ValidateDispatchStatusValidateJobOrderSite のサービスを呼び出します。複数のジョブオーダーが 1 回の操作で作成または更新され、そのいずれかに無効な実行状態が指定されている場合、操作全体は成功しません。「ログレベル」「デバッグ」に設定すると、検証サービスの詳細と「監視」 > 「ScriptLog」のすべてのエラーが表示されます。検証がエラーになった場合に例外を発行する方法の例は、ValidateJobOrderSite サービスを参照してください。
操作中サービスの例
PTC.JobOrderImpl.Manager Thing には、OnCreateJobOrderOnUpdateJobOrderUpdateJobOrderExecutionResponsesForJobOrders のサービスがあります。
ジョブオーダーが正常に作成または更新されると、実行される操作に応じて、OnCreateJobOrder または OnUpdateJobOrder のサービスが呼び出されます。その操作は、次に UpdateJobOrderExecutionResponsesForJobOrders サービスを呼び出します。
操作後サービスの例
PTC.SCA.SCO.DefaultProductionOrderManager Thing には、WorkDefinitionPostCreateWorkDefinitionPostUpdateLogWorkDefinitionExecutionStatusChange のサービスがあります。
作業定義が正常に作成または更新されると、実行された操作に応じて、WorkDefinitionPostCreate サービスまたは WorkDefinitionPostUpdate サービスが呼び出されます。その操作は LogWorkDefinitionExecutionStatusChange サービスを順に呼び出し、操作に関する詳細ログを作成します。これらの詳細には、操作を担当するエージェント、作成または更新された作業定義の UID、および実行状態 UID と値があります。これらの詳細は、 > に設定された後、「監視」「ScriptLog」で確認できます。
操作前、操作中、操作後のサービスの追加
PTC.DBConnection.PreActionValidator Thing、PTC.DBConnection.OnActionProcessor Thing、および PTC.DBConnection.PostActionHandler Thing は編集できません。
操作前、操作中、または操作後のサービスをさらに追加するには、次の手順を実行します。
1. 追加の操作前サービスの場合、PTC.DBConnection.PreActionValidator Thing を複製します。追加の操作中サービスの場合、PTC.DBConnection.OnActionProcessor を複製します。追加の操作後サービスの場合、PTC.DBConnection.PostActionHandler Thing を複製します。この手順では、これらの複製 Thing は、PTC.DBConnection.PreActionValidator_Duplicate Thing、PTC.DBConnection.OnActionProcessor_Duplicate Thing、および PTC.DBConnection.PostActionHandler_Duplicate Thing として、それぞれ参照されます。詳細については、構築ブロックエンティティの複製を参照してください。
2. データシェイプが属している構築ブロックのマネージャ Thing に、操作前、操作中時、操作後のサービスを作成します。たとえば、PTC.JobOrderImpl.Manager Thing で、ジョブオーダーに、操作前、操作中、操作後のサービスを作成します。
3. PTC.DBConnection.PreActionValidator_Duplicate Thing、PTC.DBConnection.OnActionProcessor_Duplicate Thing、または PTC.DBConnection.PostActionHandler_Duplicate Thing の「コンフィギュレーション」ページで、ActionConfigurationSettings コンフィギュレーションテーブルに、必要に応じて、次の新しいエントリを追加します。
DataShapeName - この操作前、操作中、または操作後のサービスが適用されるデータシェイプの名前をサーチして選択します。
Action - 「Create」「Update」、または「Delete」の操作を入力します。値は大文字小文字を区別し、ここで示される通り正確に入力する必要があります。
ThingName - サービスが存在するマネージャ Thing の Thing 名 (PTC.JobOrderImpl.Manager など) をサーチして選択します。
ServiceNameCallServices によりディスパッチされるサービスの名前を入力します。実装が複数のサービスから構成されている場合は、別のサービスを呼び出す最初のサービスを入力します。値は大文字小文字を区別し、サービスの名前と正確に一致する必要があります。
* 
実装には一連のサービスを含めることができますが、「ActionConfigurationSettings」コンフィギュレーションテーブルで指定され、CallServices によってディスパッチされたサービスには、DataChanges という名前の入力パラメータが含まれている必要があります。この入力パラメータは、データシェイプ PTC.DBConnection.DataChange のインフォテーブルです。
4. 「追加」をクリックし、次に「保存」をクリックしてコンフィギュレーションの変更を保存します。
5. システムに設定されているデータベース Thing (PTC.DBConnection.MSSQLDatabase など) に移動します。
* 
PTC.DBConnection.Manager「コンフィギュレーション」ページで、システムに設定されているデータベース Thing を DefaultDatabaseConfiguration コンフィギュレーションテーブルで検索できます。
6. データベース Thing の「コンフィギュレーション」ページで、DatabaseValidationConfigurationTable の下の PreActionValidatorPostActionHandler、および OnActionProcessor のフィールドを更新して、手順 1 で作成した複製 Thing を指すようにします。
7. 「保存」をクリックしてデータベース Thing の設定変更を保存します。
これは役に立ちましたか?