Work With Plus では、特定の正規表現または一部の条件プロパティを実行するかどうかにかかわらず、トランザクションに追加されるパラメーターのルールを挿入する機能が提供されます。
ルールの主な目的は、大部分のトランザクションインスタンスに適用される [WWP Configuration] 内にユーザーがルールを挿入できるようにして、パターンを初めて適用する際やインスタンスの更新アクションを実行する際に、すべてのトランザクションによってこれらのルールが既定で継承されるようにすることです。
ルールを定義するためには、ルールがどの項目属性に追加されるのかを定義する正規表現またはプロパティと、<TRN_NAME>、<TRN_DESCRIPTION>、<ATT_NAME>、および <ATT_DESCRIPTION> などのタグを含めることができるルール自体を指定する必要があります。
たとえば、Person および Country のトランザクションがあるとします。
Person トランザクションには、従来の項目属性 (id、name、lastname、phone など) だけではなく、変更が行われたり作成されたりするたびにトランザクションルールによって自動的に更新される必要がある PersonCreationDate、PersonCreationUser、PersonLastUpdatedDate、および PersonLastUpdatedUser があります。したがって、Person トランザクションの構造は、次のようになります:

ユーザーおよび変更が行われた日付に関する情報をアプリケーションが記録するために必要であるため、Country トランザクションでも状況は同じであり、このトランザクションの構造は次のようになります:

最終ユーザーや更新日または作成日を記録する必要がある各トランザクションのルールに開発者が挿入する必要があるコードは非常に類似しており、繰り返されます。これらのルールの各トランザクションへの挿入を回避するための選択肢は、ルール機能を使用することです。
インスタンステンプレートの Transaction オブジェクトに次のルールを挿入する必要があります:

これらの各ルールによって設定されるプロパティを次に示します:
[Rule (SetCreationDate)]
このルールは、名前に「CreationDate」 ([Regular Expression]) を含むすべての項目属性に対して、挿入の場合に afterValidate イベント上の Now() 関数の結果を割り当てます。ルールの名前によって、パターンインスタンス内で識別されます。

[Rule (SetCreationUser)]
このルールは、「CreationUser」 ([Regular Expression]) を含むすべての項目属性に対して、挿入の場合に afterValidate イベント上のコンテクストのユーザーの値を割り当てます。

[Rule (SetLastUpdatedDate)]
このルールは、「LastUpdatedDate」 ([Regular Expression]) を含むすべての項目属性に対して、ユーザーがレコードを更新している場合に afterValidate イベント上の Now() 関数の結果を割り当てます。

[Rule (SetLastUpdatedUser)]
このルールは、「LastUpdatedUser」 ([Regular Expression]) を含むすべての項目属性に対して、ユーザーがレコードを更新している場合に afterValidate イベント上に保存されたコンテクストのユーザーの値を割り当てます。

[Rule (NoAcceptLastUpdated_Creation_Attributes)]
このルールは、「User」または「Date」の横に「LastUpdated」または「Creation」を含むすべての項目属性に対して、NoAccept ルールを割り当てます。

次に、Person トランザクションに既定のインスタンスを作成しますが、インスタンステンプレート内に作成されたルールがこれに含まれていることが分かります:

オブジェクトを保存すると、ルールが適切に追加されたことが表示されます:

Person トランザクション内部で正規表現を実行する項目属性にルールが追加されました。
次に、Country トランザクションに既定のインスタンスを作成しますが、インスタンステンプレート内に作成されたルールがこれに含まれていることが分かります:

最後に、オブジェクトを保存すると、ルールが適切に追加されたことが表示されます:
