Activiti 表单字段的自定义验证

Custom validation on Activiti form field

我需要知道如何创建自定义验证规则以应用于 Activiti 表单中的特定字段以及如何将所有文件一起部署到其引擎。

谢谢

对于可重复使用的字段级验证(例如:phone 号码、邮政编码等),我认为最好的方法是在引擎的配置中注册自定义 FormType(检查 Activiti 上的第 9.1 项)用户指南)。自定义 FormType 实现是通过扩展 A​​bstractFormType 并实现一些方法来创建的,这些方法将 to/from 字符串转换为您想要在内部使用的任何表示形式.

表单级别验证(即应用于整个表单的验证)我通常使用 TaskListener 附加到侦听 EVENTNAME_COMPLETE 的任务事件。在这个侦听器中,您执行验证逻辑并在出现问题时抛出异常。

至于"deploying everything together":对于最简单的情况,您只需创建一个带有额外验证的jar 类 并将其放入您的类路径中。如果您希望此代码与您的流程一起部署,则没有直接的答案。有可能,但我认为这应该是另一个问题的主题。

Philippe 的回答应该会给您相当可靠的结果。另一种不添加 JavaScript 的方法是在模型中使用正则表达式约束。

例如,如果我希望我的输入是一个五位数的区号,我可能会这样做:

<constraint name="myWorkflow:zipRegex" type="REGEX">
    <parameter name="expression">
        <value>^\d{5}$</value>
    </parameter>
</constraint>

顺便说一下,这是一个用于构建和测试正则表达式的好工具:https://regex101.com/

在这种情况下,除了正常的 bpmn20、模型、config-custom 和它们的上下文文件之外,没有外部文件被编辑,并且部署可以与典型的方式相同。将文件放入各自的 class 文件夹(/extension 用于 bpmn、模型及其上下文文件;/web-extension 用于 config-custom 及其上下文)并重新启动服务。如果它已经部署并且只是重新部署,请使用工作流控制台通过命令 'deploy activiti alfresco/extension/myWorkflow.bpmn20.xml'

进行部署