bs结构下的oa流程可视化的研究与实现—计算机毕业设计内容摘要:

ase = jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=; database+= () + ; DriverID=22; READONLY=true}; // add on to the end con = ( jdbc:odbc:ccos ,); //数据源 } catch (ClassNotFoundException e) { // TODO Autogenerated catch block (); } catch (SQLException e) { // TODO Autogenerated catch block (); } return con; } 4 系统功能模块实现 系统流程及图示 一个流程的设计是先通过绘图来对实际业务过程进行分析、建模,然后通过一定的技术生成所建立流程模型的可被上层接口处理的形式化描述。 其流程如下图: 图 4 系统流程图 流程可视化设计实现 界面可视化 这是工具开始运行出现的第一个界面,由 Inter Explorer 浏览器打开,可以适应 B/S 结构的 OA 系统。 流程 绘图 保存 提供上层服务 读取修改 流程名 N Y 图 5 工具可视化界面 界面的布局由 BorderLayout来实现,分北部、西部、中部三部分。 包括: 北部 控制板( ArcControls); 西部 绘图工具板( ToolBlank); 中部 绘图画板 ( ArcCanvas)。 具体代码实现如下: (borderLayout1); (ArcControls, ); (ArcCanvas, ); (ToolBlank, ); 绘图功能设计 当设计一个流程时,用户点击绘图工作板中的绘制节点和绘制弧线两个按钮结合着选择环节名,将指定的可视化部件拖拉绘制 在工作平台上,每一个可视化部件代表一个角色,用流向箭头将各个部件关联起来。 还可以对节点和弧线进行修改和删除。 一个矩形节点的绘制,需要对它的各项属性进行定义,包括对它的起点坐标、矩形的宽和高、矩形的边框坐标。 以下是节点定义的简单描述: public class Node extends BaseObject{ int LeftUpNodeX。 //定义顶点坐标 int LeftUpNodeY。 private int starx。 //定义起始点 ,高 ,宽 private int stary。 private int Heigh。 private int Width。 private int MinX。 //定义边框 private int MinY。 private int MaxX。 private int MaxY。 Color color。 //定义外框颜色 String NodeName=。 //节点名称 } 绘制节点: (, , , ); //画矩形 (, +, +Height/2); //画节点名 拖动节点: public void SetNodeMoved(int x, int y){ = x; = y; = starx; = stary; = starx + Width; = stary + Height; } 拖动节点时鼠标动态: public void mouseDragged(MouseEvent e) { //鼠标拖动 int x = (); int y = (); switch(status){ case 1: if ( == true) { node = new Node((), (), CurrentNodeName); (node); = true; = false; repaint(); } else { if (IfDrag == true) { if (node != null) { (x, y); repaint(); } } else { if (SelectNodeDrag == true) { (x, y); (()); repaint(); } } } break; } } 节点与节点之间需要用弧线进行连接。 一段弧线需要对它的起点坐标、终点坐标等属性进行定义。 以下是弧线定 义的简单描述: 弧线定义: public class Arc { private int endx。 //结束坐标 private int endy。 private int startx。 //起点坐标 private int starty。 private int[] SelectedNode = new int[2]。 //选择节点 private Vector Point。 //点元素 private Color color。 private boolean ArcEnd。 //判断弧段是否结束增加节点 public Arc(int x,int y) { Point = new Vector()。 int[] star = new int[2]。 //点由 2元素 ( x, y) 组成 star[0] = x。 star[1] = y。 = x。 = y。 (star)。 =。 = false。 } 绘制弧线: public void DrawMyself(Graphics g){ int length = (); (color); if (length 0) { (Arc node size: + length); if (length == 1) { } else { for (int i = 0; i length 1; i++) { int[] Spoint = (int[]) (i); int[] Epoint = (int[]) (i + 1); (Spoint[0], Spoint[1], Epoint[0], Epoint[1]); } 弧线拖动: public void mouseDragged(MouseEvent e) { //鼠标拖动 int x = (); int y = (); switch(status){ case 3: if (SelectArcDrag == true) { if ( (arc != null) amp。 amp。 (arcNodeindex != 1)) { (arcNodeindex, x, y); repaint(); }else if((arc != null)amp。 amp。 (arcNodeindex == 1)){//选中的是最后一个不再 Vetor里面的点 (x, y); repaint(); } } break; } } 画箭头: int[] lastpoint = (int[]) (length 1); (lastpoint[0], lastpoint[1], , ); //画箭头 if((lastpoint[0] == endx)amp。 amp。 (lastpoint[1]endy))//开口向下 { (endx, endy, endx+3, endy3); (endx, endy, endx3, endy3); }else if((lastpoint[0] == endx)amp。 amp。 (lastpoint[1]endy)){ //开口向上 (endx, endy, endx+3, endy+3); (endx, endy, endx3, endy+3); }else if((lastpoint[1] == endy)amp。 amp。 (lastpoint[0]endx)){//开口向左 (endx, endy, endx+3, endy3); (endx, endy, endx+3, endy+3); }else if((lastpoint[1] == endy)amp。 amp。 (lastpoint[0]endx)){//开口向右 (endx, endy, endx3, endy3); (endx, endy, endx3, endy+3); }else{//任意方向用点代替 (endx2, endy2, 5, 5); } if ( (SelectedNode[0] != 0) amp。 amp。 (SelectedNode[1] != 0)) { (); (SelectedNode[0]2, SelectedNode[1]2, 5, 5); } 删除节点: public void DeleteSelectedNode() { if (haveSelectedNode == true) { (nodeindex); = false; repaint(); } } 删除弧线 : public void DeleteSelectedArc() { if (haveSelectedArc == true) { (arcindex); = false; repaint(); } } 下图为一设计好 了的流程图: 图 6 一个设计好的工作流程图 流程图保存和读取方法设计 将序列化后的节点与弧线的对象保存为 xml文件,易于保存和重绘。 序列化是将对象写到流中,序列化需要对象实现 Serializable接口,序列化后能将对象转换成一系列字节,并可在以后完全复原。 序列化可以实现“有限持久化”。 在保存前先要对已经绘出的节点以及弧线进行属性采集,我们用一个NodeBean以及 ArcBean方法来实现其功能, NodeBean的代码描述如下: public class NodeBean implements {} public NodeBean(){ } String LeftUpNodeX; //定义顶点坐标 String LeftUpNodeY; private String MinX; //定义边框 private String MinY; private String MaxX; private String MaxY; Color color; //定义外框颜色 String NodeName=; //节点名称 public String getNodeName() { return NodeName; } public void setNodeName(String nodeName) { NodeName = nodeName; } public Color ge。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。