最初に注意すること: データ ルールは操作にバインドされているのではなく、フィールドにバインドされています。したがって、この場合、キー生成操作は、シーケンス内の次の番号を取得することと考えてください。シーケンス値が取得されると、適切なバインドされたデータ ルールは、永続化される前にシーケンス値をフォーマットできる必要があります。
次のようなデータルールを定義できるはずです。
<!-- datarules/format-asset-patent-id/definition.xml -->
<data-rule name="format-asset-patent-id"
factory-class="com.aviarc.framework.datarule.xml.DefaultXMLDataRuleProviderFactoryImpl"
datarule-class="com.aviarc.framework.datarule.workflow.WorkflowDataRule">
<parameters>
<parameter name="field" mandatory="y"/>
</parameters>
<event name="onBeforeDatasetPersisted" workflow="workflows/format-asset-patent-id" field="{@field}"/>
</data-rule>
次に、format-asset-patent-id ワークフローで、ID のフォーマットを処理できます。(注: onBeforeDatasetPersisted イベントが鍵生成操作の実行前または実行後に発生するかどうかをテストする機会はありませんでした。)
次に、データバインディングでバインドできます。次に例を示します。
<!-- databindings/asset-patent.xml -->
<databinding databroker="asset-patent"
factory-class="com.aviarc.framework.databinding.basic.BasicDataBindingFactoryImpl">
<on-dataset-bound>
<data-rules>
<format-asset-patent-id field="id"/>
</data-rules>
</on-dataset-bound>
</databinding>