1

ID フィールドが追加の文字パディングを含む連番、つまりP001またはTM234であるワークフロー SQL データブローカがあります。

ID 生成のクエリを次のように定義しました。

<key-generation field="id" query="queries/asset-patent-get-id" />

提供されたパラメーターに基づいて次のシーケンス値を取得するだけです。そのため、作成されたすべてのレコードについて、ID がデータベースに格納されるまでに、必要なルールに従ってすでにパディングされ、単なる数字ではなく文字列として格納されていることを確認する必要があります。

4

1 に答える 1

0

最初に注意すること: データ ルールは操作にバインドされているのではなく、フィールドにバインドされています。したがって、この場合、キー生成操作は、シーケンス内の次の番号を取得することと考えてください。シーケンス値が取得されると、適切なバインドされたデータ ルールは、永続化される前にシーケンス値をフォーマットできる必要があります。

次のようなデータルールを定義できるはずです。

<!-- 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>
于 2012-10-09T09:50:22.023 に答える