我需要知道如何创建自定义验证规则以应用于Activiti表单中的特定字段,以及如何将所有文件一起部署到其引擎。
由于
答案 0 :(得分:4)
对于可重复使用的字段级验证(例如:电话号码,邮政编码等),我认为最好的方法是在引擎配置中注册自定义FormType(请参阅Activiti用户指南中的9.1项)。自定义 FormType 实现是通过扩展 AbstractFormType 并实现一些方法来创建的,这些方法将字符串转换为/从内部转换为您想要在内部使用的任何表示形式。
表单级别验证(即,作为整体应用于表单的验证)我通常使用附加到侦听EVENTNAME_COMPLETE事件的任务的 TaskListener 。在这个监听器中,你执行验证逻辑并在出现错误时抛出异常。
至于“将所有内容部署在一起”:对于最简单的情况,您只需使用额外的验证类创建一个jar并将其放在类路径中。如果您希望在您的流程中部署此代码,则没有直接的答案。这是可能的,但我认为这应该成为另一个问题的主题。
答案 1 :(得分:0)
菲利普的回答应该给你相当可靠的结果。不添加JavaScript的另一种方法是在模型中使用正则表达式约束。
例如,如果我希望输入为五位区号,我可以这样做:
<constraint name="myWorkflow:zipRegex" type="REGEX">
<parameter name="expression">
<value>^\d{5}$</value>
</parameter>
</constraint>
顺便说一下,这是构建和测试正则表达式的好工具:https://regex101.com/
在这种情况下,除了普通的bpmn20,model,config-custom及其上下文文件之外,没有其他外部文件,并且可以按照典型的方式进行部署。将文件放入各自的类文件夹(/ bpmn,模型及其上下文文件的扩展名; / config-custom及其上下文的/ web扩展名)并重新启动服务。如果它已经部署并且只是重新部署,请使用工作流控制台使用命令部署activiti alfresco / extension / myWorkflow.bpmn20.xml&#39;