当前位置:主页 > 新葡的京集团350vip正文

新葡的京集团350vip_一起听吧网进入

03月18日作者:黑曼巴


看了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新葡的京集团350vip;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 implem新葡的京集团350vipents 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.Lo新葡的京集团350vipgger;

public class GraphView extends GraphImpl{

private新葡的京集团350vip 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.ge新葡的京集团350viptLabel(), 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");}

}

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

具体代码可以自己看附件的代码。

源码jgraphxflow.rar

运行法度榜样jgraphxflow.jar.rar

最近关注

热点内容

更多