- A+
与之前写的一篇文章的操作基本一致
区别就是默认的颜色和样式使用的是DefaultProcessDiagramGenerator类,而我们如果要自定义高亮颜色则需要重写这个类,但是重写这个类还不够,因为里面还用到了另一个类DefaultProcessDiagramCanvas,所以我们需要重写这两个类。其中颜色定义主要在DefaultProcessDiagramCanvas类中,可以看到其中有一个属性HIGHLIGHT_COLOR定义的值就是Color.RED,也就是红色,默认所有完成节点和当前节点都是红色的框,现在我们想实现的效果是完成的节点框是绿色,当前节点框是红色。
主要实现过程如下:
CustomProcessDiagramCanvas里,定义与HIGHLIGHT_COLOR类似的绿色,包括用到的地方也需要复制一份,比如drawHighLight方法。
CustomProcessDiagramGenerator里,使用上面的CustomProcessDiagramCanvas类,重点来了,主要是修改drawActivity方法,默认里面的逻辑是,如果是需要高亮的节点,那么就调用processDiagramCanvas.drawHighLight方法来把它的框变成红色。现在我们需要做的是在这个地方判断下,如果是当前节点,就用这个方法画红色,如果是已完成节点,就调用我们自己写的画绿色的方法。
那么问题来了,我们如何知道一个节点是已完成节点还是当前节点呢?答案是historicActivityInstance里取得的list中,最后一个节点就是当前节点,前面的节点都是已完成的节点,由于调用高亮方法时需要传一个高亮id的集合,这时我们可以在循环这个list时,如果是当前节点,则把高亮id设为一个另外的标识(之后做判断用),比如为ActivityId + “#”,而已完成节点的高亮id就设为ActivityId。这样在上面提到的drawActivity里就可以判断出是否为已完成节点,从而画不同的颜色了。
如果大家需要CustomProcessDiagramCanvas和CustomProcessDiagramGenerator这两个文件,可以留言。
2022年7月8日 下午5:52 沙发
您好 可以给我发下这两个文件吗 524440143@qq.com
2021年9月29日 下午3:21 板凳
可以把那两个重写类发给我下吗 大侠
2020年10月21日 下午3:56 地板
大神,可以发下代码吗?感谢
2020年10月23日 上午9:43 1层
@cj 代码在我的github上
https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom
2020年8月13日 上午11:39 4楼
可以发下代码吗 邮箱425564771@qq.com
2020年6月9日 下午6:08 5楼
你好 可以给我发下这两个文件吗 2844577936@qq.com
2020年6月10日 上午11:28 1层
@simon 在我的github上
https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom
2020年4月28日 上午11:32 6楼
CustomProcessDiagramCanvas和CustomProcessDiagramGenerator这两个文件可以参照我的github地址
https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom
2020年4月26日 下午2:51 7楼
你好 可以给我发下这两个文件吗 1124341084@qq.com
2020年4月28日 上午11:31 1层
@mrx 已发送