posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          jbpm流程設計器開發(1)

          Posted on 2010-08-22 23:22 penngo 閱讀(5103) 評論(2)  編輯  收藏 所屬分類: JBPM

              看了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代碼

          package com.workflow.designer.view;

          import java.awt.Point;
          import java.awt.event.MouseEvent;
          import java.awt.event.MouseListener;
          import com.mxgraph.swing.mxGraphComponent;
          import com.mxgraph.view.mxGraph;
          import com.workflow.designer.model.Node;
          import com.workflow.designer.util.Logger;

          public abstract class GraphImpl extends mxGraphComponent implements MouseListener{
           
          //新建Jgraph面板,所有節點都繪制在該面板
           private static mxGraph graph = new mxGraph();
           
          public GraphImpl(){
            
          super(graph);
            
          //給面板添加鼠標事件
            this.getGraphControl().addMouseListener(this);
           }

           
           
          public abstract void inser(Point p, Node n);
           
           
          public abstract void mouseClicked(MouseEvent e);

           
          public abstract void mousePressed(MouseEvent e);

           
          public abstract void mouseReleased(MouseEvent e);

           
          public abstract void mouseEntered(MouseEvent e);

           
          public abstract void mouseExited(MouseEvent e);
           
           
          public mxGraph getGraph() {
            
          return graph;
           }

          }



          GraphView.java代碼

          package com.workflow.designer.view;

          import java.awt.Point;
          import java.awt.event.MouseEvent;
          import com.mxgraph.view.mxGraph;
          import com.workflow.designer.model.Node;
          import com.workflow.designer.util.Logger;

          public class GraphView extends GraphImpl{
           
          private mxGraph graph = this.getGraph();
           
          private Object parent = graph.getDefaultParent();
            
          public GraphView(){
             
            }


            
          public void inser(Point p, Node n){
             
          this.getGraph().getModel().beginUpdate();
             
          try
             
          {
              
          //調用jgraph插入節點
                Object v1 = graph.insertVertex(parent, null, n.getLabel(), p.getX() - 5, p.getY() - 5, n.getWidth(),
                      n.getHeight(), n.getShape());
             }

             
          finally
             
          {
                graph.getModel().endUpdate();
             }

            }

            
            
          public void mouseClicked(MouseEvent e){
             Point p 
          = e.getPoint();
             
          //鼠標點擊時,在jgraph面板上插入節點
             inser(p, new Node("開始""start""shape=ellipse;perimeter=ellipsePerimeter;"));
             Logger.debug(
          "mouseClicked");
            }


           
          public void mousePressed(MouseEvent e){
            Logger.debug(
          "mousePressed");
           }


           
          public void mouseReleased(MouseEvent e){
            Logger.debug(
          "mouseReleased");
           }


           
          public void mouseEntered(MouseEvent e){
            Logger.debug(
          "mouseEntered");
           }


           
          public void mouseExited(MouseEvent e){
            Logger.debug(
          "mouseExited"); 
           }


          }



          http://www.aygfsteel.com/pengo

          待續。。。。。。。。。。。。

          詳細代碼可以自己看附件的代碼。

          源碼jgraphxflow.rar
          運行程序jgraphxflow.jar.rar
           


          評論

          # re: jbpm流程設計器開發(1)  回復  更多評論   

          2010-08-23 13:47 by cxh8318
          期待中

          # re: jbpm流程設計器開發(1)  回復  更多評論   

          2013-05-02 19:23 by 劉聰
          你好,近期研究了一下你貼出來的相關程序,有些問題,懇請指教,QQ:1054221627.
          主站蜘蛛池模板: 龙川县| 昌江| 九龙县| 腾冲县| 通江县| 蒙阴县| 额敏县| 洮南市| 克东县| 阿巴嘎旗| 滨海县| 交口县| 青海省| 台北县| 安康市| 庐江县| 塘沽区| 电白县| 扎赉特旗| 蓬溪县| 休宁县| 马尔康县| 忻州市| 获嘉县| 宜兰县| 彭泽县| 富宁县| 明水县| 张家界市| 徐汇区| 青州市| 独山县| 缙云县| 清丰县| 东安县| 德安县| 白山市| 西藏| 大足县| 宁明县| 团风县|