Transaction オブジェクトで定義された特定のルールやイベントを、そのオブジェクトが特定のユーザーインターフェース (Windows/GUI、Web/HTML、テキスト) で実行されるときや、バックエンドプロセスの
ビジネスコンポーネントでデータが処理されるときにのみ実行するように指定することができます。
次の 2 とおりの構文があります:
1) 個別:
[ ContextIdentifier1 ] [ ContextIdentifier2 ] [ ContextIdentifierN ]
rule | event
2) ブロック単位:
[ ContextIdentifier1 ] [ ContextIdentifier2 ] [ ContextIdentifierN ]
{
rule | event
rule | event
}
入力値の説明:
[
ContextIdentifier1 ] [
ContextIdentifier2 ] [
ContextIdentifierN ]
ルール/イベントを実行するコンテキストを示します。有効な値は次のとおりです:
- [ web ] : トランザクションの [ Web レイアウト ] (HTML) が実行されると、後続のルール/イベントがトリガーされます。
- [ bc ] : トランザクションがバックエンドプロセスのビジネスコンポーネントとして実行されると、後続のルール/イベントがトリガーされます。
- [ win ] : 後続のルール/イベントは Windows / GUI フォームに適用されます。
- [ text ] : 後続のルール/イベントは文字ベースのユーザーインターフェースに適用されます。
- [ business ] : これが既定値です。どの ContextIdentifier も指定しないか、あるいはすべてを指定したのと同様です。
rule
トランザクションルールまたはそのリストです。
event
トランザクションイベントまたはそのリストです。
オブジェクト: Transaction
検証やアクションの中には、エンドユーザーがトランザクションの Web インターフェースを通じて操作している場合にのみ意味を持ち、ビジネスコンポーネントを通じてデータを処理する場合は意味を持たない場合や、その逆の場合があります。そのため、この機能によって、特定のルールやイベントを実行したいコンテキストを示すことができます。
特定のコンテキストでのみ適用されるルール/イベントを定義する機能により、システムとのインタラクションの種類に固有のニーズに適合したビジネスロジックを作成することができます。
これは特に、エンドユーザーとのインタラクションがさまざまなレイヤーで処理されるシナリオや、操作の起源 (たとえば Web とバックエンド) に応じてビジネスロジックをより細かく制御する必要がある場合に適しています。
まとめると、
ContextIdentifiers を使用することで以下のことが可能になります:
- 実行のコンテキストを指定する: ルール/イベントが適用されるべき範囲を明確に定義し、コードの構成と明快さを向上させます。
- ビジネスロジックをカスタマイズする: 実行環境に応じてアプリケーションの動作を適応させ、より豊かで正確なユーザーエクスペリエンスを提供します。
- パフォーマンスを最適化する: 特定のコンテキストで不要なルール/イベントの実行を回避することで、アプリケーションのパフォーマンスを向上させることができます。
- 保守性を向上させる: ビジネスルールが適用される場所と方法を制御する明確なメカニズムを提供することで、コードの理解と保守を容易にします。
例 1:
個別の定義
Customer トランザクションの [ Rules ] エレメント
[ web ]
Noaccept(CustomerId) If Insert On AfterValidate;
[ bc ]
CustomerAddress.SetNull() if CustomerAddress.IsEmpty()
Customer トランザクションの [ Events ] エレメント
[ win ] [ web ]
Event After Trn
Settings(CustomerId)
EndEvent
NoAccept ルールは、Windows 環境または GUI 環境にのみ適用され、Start イベントは Win 環境と Web 環境で有効です。
例 2
以下の各例は、ブロック構文の使用例を示しています。
[ win ]
{
Parm(&CustomerId, &Mode);
CustomerId = &CustomerId If Update Or Delete;
Noaccept(CustomerId);
}
[ win ] [ text ]
{
Event After Trn
Settings(CustomerId)
EndEvent
Event ‘User’ 8
//何らかの処理を実行
EndEvent
}