如何在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);
@Autowired
protected 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设计器为任务节点扩展属性已经讲解完毕了。