java 流程设计器_jbpm流程设计器开发(1)

看了net博客介绍的不少wf流程设计器实现,也来介绍下java版的jbpm流程设计器来给大家看看。jbpm它本身也有基于eclipse插件和web版的流程设计器,不过一般我们使用jbpm开发时,都有很多自定义的东西,使用它自带的,会有一些不方便性,所以开发自定义的流程设计器,会有很多方便性。目前见过的用来开发流程设计器的组件有vml、svg、gef、jgraph,最近在javaeye上牛人介绍的Twave组件应该也适合用来开发。本篇将会介绍用jgraph来开发一个简单的jbpm4的流程设计器。jgraph官网:www.jgraph.com,目前有java版、javascript版、flash版,java版的jgraph是开源免费的,详细的介绍可以看官网。本文使用的JGraph版本是jgraphx 1.4.0.9(也叫jgraph6),它与jgraph5有很大的不同,实现类基本不同了。

本篇先实现流程节点的插入,目前只实现开始节点的插入,后续的文章将会陆续介绍其它功能的完成。

GUI直接使用swing,目前只实现在鼠标单击时,插入一个节点,主要实现代码类:

GraphImpl.java代码

4f1150b881333f12a311ae9ef34da474.pngpackagecom.workflow.designer.view;

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngimportjava.awt.Point;

4f1150b881333f12a311ae9ef34da474.pngimportjava.awt.event.MouseEvent;

4f1150b881333f12a311ae9ef34da474.pngimportjava.awt.event.MouseListener;

4f1150b881333f12a311ae9ef34da474.pngimportcom.mxgraph.swing.mxGraphComponent;

4f1150b881333f12a311ae9ef34da474.pngimportcom.mxgraph.view.mxGraph;

4f1150b881333f12a311ae9ef34da474.pngimportcom.workflow.designer.model.Node;

4f1150b881333f12a311ae9ef34da474.pngimportcom.workflow.designer.util.Logger;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicabstractclassGraphImplextendsmxGraphComponentimplementsMouseListener9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png//新建Jgraph面板,所有节点都绘制在该面板d18c02628675d0a2c816449d98bda930.pngprivatestaticmxGraph graph=newmxGraph();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicGraphImpl()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngsuper(graph);

d18c02628675d0a2c816449d98bda930.png//给面板添加鼠标事件d18c02628675d0a2c816449d98bda930.pngthis.getGraphControl().addMouseListener(this);

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png 

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidinser(Point p, Node n);

d18c02628675d0a2c816449d98bda930.png 

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidmouseClicked(MouseEvent e);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidmousePressed(MouseEvent e);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidmouseReleased(MouseEvent e);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidmouseEntered(MouseEvent e);

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.pngpublicabstractvoidmouseExited(MouseEvent e);

d18c02628675d0a2c816449d98bda930.png 

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicmxGraph getGraph()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturngraph;

ecedf933ec37d714bd4c2545da43add2.png }8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

GraphView.java代码

4f1150b881333f12a311ae9ef34da474.pngpackagecom.workflow.designer.view;

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngimportjava.awt.Point;

4f1150b881333f12a311ae9ef34da474.pngimportjava.awt.event.MouseEvent;

4f1150b881333f12a311ae9ef34da474.pngimportcom.mxgraph.view.mxGraph;

4f1150b881333f12a311ae9ef34da474.pngimportcom.workflow.designer.model.Node;

4f1150b881333f12a311ae9ef34da474.pngimportcom.workflow.designer.util.Logger;

4f1150b881333f12a311ae9ef34da474.png

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassGraphViewextendsGraphImpl9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngprivatemxGraph graph=this.getGraph();

d18c02628675d0a2c816449d98bda930.pngprivateObject parent=graph.getDefaultParent();

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicGraphView()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png   

ecedf933ec37d714bd4c2545da43add2.png  }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidinser(Point p, Node n)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.getGraph().getModel().beginUpdate();

d18c02628675d0a2c816449d98bda930.pngtry97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png//调用jgraph插入节点d18c02628675d0a2c816449d98bda930.pngObject v1=graph.insertVertex(parent,null, n.getLabel(), p.getX()-5, p.getY()-5, n.getWidth(),

d18c02628675d0a2c816449d98bda930.png            n.getHeight(), n.getShape());

ecedf933ec37d714bd4c2545da43add2.png   }d18c02628675d0a2c816449d98bda930.pngfinally97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png      graph.getModel().endUpdate();

ecedf933ec37d714bd4c2545da43add2.png   }ecedf933ec37d714bd4c2545da43add2.png  }d18c02628675d0a2c816449d98bda930.png  

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidmouseClicked(MouseEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png   Point p=e.getPoint();

d18c02628675d0a2c816449d98bda930.png//鼠标点击时,在jgraph面板上插入节点d18c02628675d0a2c816449d98bda930.pnginser(p,newNode("开始","start","shape=ellipse;perimeter=ellipsePerimeter;"));

d18c02628675d0a2c816449d98bda930.png   Logger.debug("mouseClicked");

ecedf933ec37d714bd4c2545da43add2.png  }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidmousePressed(MouseEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png  Logger.debug("mousePressed");

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidmouseReleased(MouseEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png  Logger.debug("mouseReleased");

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidmouseEntered(MouseEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png  Logger.debug("mouseEntered");

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidmouseExited(MouseEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png  Logger.debug("mouseExited"); 

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png

8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

b5bce56237261e5945407b2b5b6a8c24.png

待续。。。。。。。。。。。。

详细代码可以自己看附件的代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值