如何将Collibra工作流中嵌入的Cron定时配置设为可配置属性?
解决Collibra工作流中定时器Cron表达式可配置的问题
我之前也碰到过一模一样的需求,折腾了好一阵才找到靠谱的实现方式,下面是亲测有效的步骤:
步骤1:在工作流概览中添加可配置属性
首先得给工作流加一个全局的自定义属性,用来存储Cron表达式:
- 打开Collibra工作流设计器,进入目标工作流的「概览」页面
- 找到「属性」板块,点击「添加属性」
- 配置属性详情:
- 名称:比如
timerCron(自定义,只要语义清晰就行) - 类型:选择「字符串」
- 默认值:填入你原来的
0 58 16 1/1 * ? *作为初始配置 - 务必勾选「在概览中可见」,这样就能在工作流概览页直接编辑这个值
- 名称:比如
步骤2:修改定时器事件的XML配置
接下来把硬编码的Cron表达式替换成引用工作流全局属性的Juel表达式:
把原来的代码:
<timerEventDefinition> <timeCycle>0 58 16 1/1 * ? *</timeCycle> </timerEventDefinition>
替换为:
<timerEventDefinition> <timeCycle>${workflowProperties.timerCron}</timeCycle> </timerEventDefinition>
这里的workflowProperties是Collibra内置的全局对象,专门用来访问工作流概览页配置的自定义属性,后面跟着你刚才创建的属性名称就行。
步骤3:验证与测试
- 保存工作流修改并发布更新
- 回到工作流概览页,尝试修改
timerCron的属性值 - 启动新的工作流实例,观察定时器是否按照新的Cron规则触发
为什么之前的表达式属性尝试没成功?
大概率是因为你用了流程变量的表达式——定时器事件是在工作流实例启动前就需要解析的,而流程变量是实例化后才存在的,自然无法被定时器识别。必须用工作流级别的全局属性(也就是通过workflowProperties访问的概览配置项),这类属性在工作流部署阶段就会被加载,能被定时器正确解析。
内容的提问来源于stack exchange,提问作者user3901666
相关产品推荐
相关产品推荐

