博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web工作流设计器开发图模型与核心类
阅读量:6924 次
发布时间:2019-06-27

本文共 1857 字,大约阅读时间需要 6 分钟。

hot3.png

中最核心的类是vsGraphModel,它用来描述图的结构。该类提供 基本的 API 用来添加,更改和删除图中的元素。另外,它还提供一些其他的 函数,如获取图形的结构,以及提供的方法来设置的图的可见性,分组和样 式等等。

程序员只需要了解 vsGraphModel 类就可以了, 因为编程的时候并不要和 vsGraphModel 打交道。 我们在 vsGraphModel 上包装了一个类 vsGraph, 这个类提供更友好的 API 供程序要使用。

注意: 一些核心的 API,我们用红色表示出来。 我们引入了事务的概念,用来确保多项操作同时成功或同时失败(类似数据

库事务)。例如在我们的第一个例子中,有如下的代码片段:

 

//  在事务中同时添加多个元素 graph.getModel().beginUpdate(); try

{

var  v1 =  graph.addDian(parent,  null,  'Hello,',  20,  20,  80,  30);

var  v2 =  graph.addDian(parent,  null,  'World!',  200,  150,  80,

30);

var  e1 =  graph.addBian(parent,  null,  '', v1,  v2);

}

finally

{

//  更新界面

graph.getModel().endUpdate();

}

 

请注意上面的代码片段。我们先调用了 beginUpdate(), 使得图模型进入事务 模式, 添加了一些元素后,我们再在 finally 中调用 endUpdate() 提交事 务,这样使得 v1,v2,e1 要么同时加入成功,要么一个都不加入。

 

主要使用的 API:

 

vsGraphModel.beginUpdate() – 开始事务 vsGraphModel.endUpdate() – 结束事务. vsGraph.addDian() – 添加一个节点. vsGraph.addBian() – 添加一根连线.

修改图的重要函数

 

 

以下是一些修改图属性的的函数。

 

add(parent, child, index) remove(cell) setCollapsed(cell, collapsed) setGeometry(cell, geometry) setRoot(root)

setStyle(cell, style)

setTerminal(cell, terminal, isSource) setTerminals(bian,source,target) setValue(cell, value)

setVisible(cell, visible)

 

插入元素

 

 

程序员可以通过以上的 add 方法向多比控件中插入元素。 但是程序员需要 在插入元素前构造节点或连线。这样比较麻烦。我们提供以下两个快捷函数 用来插入节点和连线。

 

重要的函数:

 

vsGraph.insertDian(parent, id, value, x, y, width, height, style) 

产生一个节点,并插入到图形中。

vsGraph.insertBian(parent, id, value, source, target, style) – 产生

一条连线并插入到图形中。.

 

vsGraph.insertDian() 参数意义:

 

parent – 插入节点的父节点。程序员可以使用

graph.getDefaultParent()来获取默认的父节点。

i– 节点的唯一标示。 程序员可以通过该标示查找节点。如果不想关

心 id,只需要传入 null。(注意,请确保 vsGraphModel.isCreateIds()

返回 true),这样控件可以自动为你管理。

value – 这个可以是代表你业务数据的任何对象,例如,包含身高、姓

名、年龄等的职员对象。 如果是简单的字符串, 该字符串会为节点

或连线的标记文字。

x, y, width, height –分别是位置坐标和宽度、高度。

styl– 样式字符串。会在以后的章节详细说明。

 

在插入连线的函数中, 有 source 和 target 两个参数,分别代表连线的开始 节点和结束节点。在调用该函数之前, 需要将开始和结束节点先插入到图 中。

转载于:https://my.oschina.net/u/180932/blog/56111

你可能感兴趣的文章
PostgreSQL命令列表
查看>>
Android笔记---点击事件的四种写法
查看>>
优先队列
查看>>
BZOJ 1115: [POI2009]石子游戏Kam (阶梯nim)
查看>>
【来龙去脉系列】什么是区块链?
查看>>
wx小程序的学习
查看>>
2018.03小结
查看>>
54. Spiral Matrix
查看>>
ribbion的负载均衡之端口的切换
查看>>
【转载】php如何给APP端写接口
查看>>
G1 垃圾收集器入门
查看>>
vim configure
查看>>
vsCode常用插件
查看>>
模仿微博信息更新的时间:刚刚,10分钟前,半小时前,一天前
查看>>
007-Go package 说明
查看>>
网易容器云平台的微服务化实践(一)
查看>>
【SSH】Hibernate关联映射
查看>>
移动端 h5开发相关内容总结——CSS篇
查看>>
linux mysql 查看默认端口号和修改端口号
查看>>
0602-Zuul构建API Gateway-Zuul Http Client、cookie、header
查看>>