如何在modler设计器中为任务节点,添加自定义的属性。
文章目录
- 1、modler设计器中所有元素的定义
- 2、flowable如何处理stencilset_bpmn.json文件
- 3、为UserTask任务节点添加一个扩展属性
- 3.1. 添加属性的名称
- 3.2. 为任务节点添加扩展属性
- 3.3. 查看效果
1、modler设计器中所有元素的定义
我们在使用modler设计器的时候,这个设计器需要依赖一个叫做stencilset_bpmn.json的文件,相信只要大家做过activiti工作流,肯定知道这个文件了,这个文件非常的重要。该文件中定义了所有modler设计器需要用到的页面元素定义,比如我们常用的任务节点(UserTask)、开始节点(startevent)、结束节点(endevent)。这些活动节点中所使用到的属性也定义在stencilset_bpmn.json文件。当然了,只要大家想汉化Flowable中的modler设计器,也是将该文件中对应的英文修改为对应的中文即可。
2、flowable如何处理stencilset_bpmn.json文件
在Flowable的源码包中有这样的一个接口,用来访问项目中的stencilset_bpmn.json文件并返回到前端页面。该接口的名称是StencilSetResource.java 核心代码如下:
@RestController
public class StencilSetResource {private static final Logger LOGGER = LoggerFactory.getLogger(StencilSetResource.class);@Autowiredprotected ObjectMapper objectMapper;@RequestMapping(value = "/rest/stencil-sets/editor", method = RequestMethod.GET, produces = "application/json")public JsonNode getStencilSetForEditor() {try {JsonNode stencilNode = objectMapper.readTree(this.getClass().getClassLoader().getResourceAsStream("stencilset_bpmn.json"));return stencilNode;} catch (Exception e) {LOGGER.error("Error reading bpmn stencil set json", e);throw new InternalServerErrorException("Error reading bpmn stencil set json");}}
}
上面展示的代码处理逻辑非常简单,直接使用类加载器获取项目根目录中的stencilset_bpmn.json文件并解析返回。
3、为UserTask任务节点添加一个扩展属性
接下来,我们在stencilset_bpmn.json中为任务节点扩展一个属性,打开stencilset_bpmn.json开始如下的操作:
3.1. 添加属性的名称
{"name" : "shareniu","properties" : [ {"id" : "shareniu","type" : "String","title" : "分享牛自定义属性","value" : "shareniu","description" : "Unique identifier of the element.","popular" : true} ]},
注意:这是一个数组,位于propertyPackages属性中
3.2. 为任务节点添加扩展属性
接下来,我们继续操作stencilset_bpmn.json文件,查找到userTask任务节点如下所示:
{"type" : "node","id" : "UserTask","title" : "任务节点","description" : "任务节点","icon" : "activity/list/type.user.png","groups" : [ "Activities" ],"propertyPackages" : ["shareniu", "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "usertaskassignmentpackage", "formkeydefinitionpackage", "formreferencepackage", "duedatedefinitionpackage", "prioritydefinitionpackage", "formpropertiespackage", "tasklistenerspackage", "skipexpressionpackage" ],"hiddenPropertyPackages" : [ ],"roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]}
propertyPackages数组中我们增加了自定义的属性shareniu。
3.3. 查看效果
上述的操作执行完毕之后,我们开始启动项目,并进行测试,拖拽一个任务节点,属性面板的展现如下图所示:
至此,关于Flowable modler设计器为任务节点扩展属性已经讲解完毕了。