Activiti7实现流程图自定义高亮颜色

  • 10
  • 浏览量:3,636 次
  • A+
所属分类:工作流引擎

与之前写的一篇文章的操作基本一致

Activiti7实现流程追踪

区别就是默认的颜色和样式使用的是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这两个文件,可以留言。

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:10   其中:访客  6   博主  4

    • avatar Faircy 0

      您好 可以给我发下这两个文件吗 524440143@qq.com

      • avatar xway 0

        可以把那两个重写类发给我下吗 大侠

        • avatar cj 0

          大神,可以发下代码吗?感谢

            • avatar ZPY Admin

              @cj 代码在我的github上
              https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom

            • avatar liangk1986 0

              可以发下代码吗 邮箱425564771@qq.com

              • avatar simon 0

                你好 可以给我发下这两个文件吗 2844577936@qq.com

                  • avatar ZPY Admin

                    @simon 在我的github上
                    https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom

                  • avatar ZPY Admin

                    CustomProcessDiagramCanvas和CustomProcessDiagramGenerator这两个文件可以参照我的github地址
                    https://github.com/zhoupeng20188/activitispringboot/tree/master/src/main/java/com/zp/activitispringboot/custom

                    • avatar mrx 0

                      你好 可以给我发下这两个文件吗 1124341084@qq.com

                        • avatar ZPY Admin

                          @mrx 已发送