我有一个Workflow SQL数据库器,其中ID字段是一个带有附加字符填充的顺序编号,即P001或TM234。
我将ID生成的查询定义为:
<key-generation field="id" query="queries/asset-patent-get-id" />它只是根据提供的参数检索下一个序列值。因此,对于创建的每一条记录,我都需要确保ID存储在数据库中时,它已经按照所需的规则填充,并且存储为字符串,而不仅仅是数字。
发布于 2012-10-09 09:50:22
首先要注意的是:数据规则不是绑定到操作,而是绑定到字段。因此,在这种情况下,只需将密钥生成操作想象为检索序列中的下一个数字,仅此而已。一旦检索到序列值,适当的绑定数据规则应该能够在序列值持久化之前对其进行格式化。
您应该能够定义如下所示的数据规则:
<!-- 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>然后,在格式-资产-专利- 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>https://stackoverflow.com/questions/12683171
复制相似问题