zoukankan      html  css  js  c++  java
  • 基于jquery的web在线流程图设计器gooFlow

    1、Gooflow特点

    1.1 跨浏览器

    可兼容IE7--IE10, FireFox, Chrome, Opera等几大内核的浏览器,且不需要浏览器再加装任何控件。

    1.2 多系统兼容性、可移植性

    由于只包括前台UI,因此二次开发者可很方便将本插件用在任何一种需要流程图的B/S系统应用上,流程图的详细实现逻辑完全交于后台程序开发者自己实现;对于后台,只要能返回/接收能被本插件解析的JSON格式数据即可.所以本插件可用于不同的服务器语言建立的后台上.

    1.3 跨领域

    流程图设计器不止用在电信领域,在其它需要IT进行技术支持的领域中都有重大作用. 

    2、Gooflow实现

    • 页面顶部栏、左边侧边栏均可自定义;
    • 当左边的侧边栏设为不显示时,为只读状态,此时的视图区可当作是一个查看器而非编辑器。
    • 侧边工具栏除了基本和一些流程节点按钮外,还自定义新的节点按钮,自定义节点都可以有自有的图标、类型名称,定义后在使用可可在工作区内增加这些自定义节点。
    • 顶部栏可显示流程图数据组的标题,也可提供一些常用操作按钮。
    • 顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。
    • 可画直线、折线;折线还可以左右/上下移动其中段。
    • 具有区域划分功能,能让用户更直观地了解哪些节点及其相互间的转换,是属于何种自定义区域内的。
    • 具有标注功能,用橙红色标注某个结点或者转换线,一般用在展示流程进度时。
    • 能直接双击结点、连线、分组区域中的文字进行编辑
    • 在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。
    • 具有操作事务序列控制功能,在工作区内的各种有效操作都能记录到一个栈中,然后可以进行撤销(undo())或重做(redo()),像典型的C/S软件一样。
    • 0.8版,取消原来的拟物化页面,变成如今的扁平化页面,并且支持主要位置的颜色自定义功能(如果想沿用原来老版本中的拟物化页面,只需保留原来的GooFlow.css文件即可);修正0.7版中的画线BUG。

    3、Gooflow界面

    如上图所示:工作区宽度高度均为可见区的2倍,X,Y轴的方向如图所示,于CSS样式中顶距top和左距left是一样的;
    左边是流程图绘制工具栏,从上至下依次为:选择指针、转换连接线、开始节点、结束节点、任务节点、自动节点、决策节点、状态节点、扩展附加节点、分支结点、聚合结点、复合子流程结点;最后一个不是节点,而是节点连线编辑与分组区域编辑两种工作区状态的切换开关,当切换至分组区域编辑后,只能操作分组区域块,节点与连线都被锁定;反之即然。
    顶部是展示流程图标题和放置一些功能按钮的操作栏,这些按钮除了系统自带的外,还可由用户自定义。
    如果初始化中设置不要左边工具栏和顶部的操作按钮,则该UI就变成了一个流程图查看/跟踪器。

    
    
    开始节点、结束节点为圆形,复合节点是绿色,其余结点均是淡蓝色圆角矩形,双击节点中的文字,可直接进行编辑;
    转换连线和直接和中段可上下移动的折线、中段可左右移动的折线共三种样式,双击线条可直接编辑线条的文字说明内容;
    分组区域需要左下角的开关被按下后才可编辑,有四种随机颜色,点击左上角的圆形图标后可改变颜色,双击文本可直接编辑。

    节点被选中时:

    连线被选中时:

    分组区域变为可操作时:

    4、Goolflow构造函数

    这里color可配置的主要部分的颜色,分别为:绘图器HEAD/图标的颜色、结点背景色、连线/结点选中时边框颜色、连线被选中/元素都标注时颜色、复合结点自定义背景颜色、字体颜色。

    如果这些都不定义,则自动使用默认颜色。

    5、Gooflow对象内部属性

    如有需要了解的可在附件中查看

    6、Gooflow数据格式

    {
        "title":"普通稿件审核流程",
        "initNum":10,
        "nodes":{
           "appFlow_node_1":{"name":"开始","left":84,"top":196,"type":"task","width":86,"height":24},
           "appFlow_node_2":{"name":"普通编辑审核","left":261,"top":39,"type":"task","width":108,"height":28},
           "appFlow_node_3":{"name":"编辑主任审核","left":444,"top":197,"type":"task","width":96,"height":26},
           "appFlow_node_4":{"name":"值班主任","left":616,"top":37,"type":"task","width":88,"height":25},
           "appFlow_node_5":{"name":"结束","left":772,"top":202,"type":"task","width":84,"height":22}
       },
        "lines":{
           "appFlow_line_6":{"type":"sl","from":"appFlow_node_1","to":"appFlow_node_2","name":"采写","marked":false},
           "appFlow_line_7":{"type":"sl","from":"appFlow_node_2","to":"appFlow_node_3","name":"初审","marked":false},
           "appFlow_line_8":{"type":"sl","from":"appFlow_node_3","to":"appFlow_node_4","name":"再审","marked":false},
           "appFlow_line_9":{"type":"sl","from":"appFlow_node_4","to":"appFlow_node_5","name":"结束流转","marked":false}
        },
        "areas":{
           "demo_area_8": {"name":"area_8","left":35,"top":20,"color":"red","width":850,"height":220}
        }
     }

    7、angularjs指令——goo-flow

    7.1 goo-flow指令功能

    增加一个流程编辑器,可自行配置相关属性

    7.2 gooflow指令使用方法

    1、配置config

    在父级controller中对config.property和config.remark进行配置

    2、准备编辑器数据jsondata

    在父级controller中获取路由resolve中的数据并保存

    3、引入goo-flow指令且传传入参数config和jsondata

    <goo-flow jsondata="jsondata" config="config"></goo-flow>

    指令的link函数会根据config和jsondata初始化流程编辑器载入数据

    7.3 指令详细说明

    7.3.1、父级controller中定义了配置和数据

    config:对象中有两个属性

    • property   定义工具栏、编辑器相关属性
    • remark     定义工具栏提示

    jsondata:后台返回的编辑器json数据,具体格式请参照数据格式

    7.3.2、指令goo-flow

    link函数中定义了一个方法editnodes

    editnodes:双击编辑节点,打开模态框,在模态框中编辑节点相关信息

    • 创建图类$.createGooFlow

    prams1{element}元素节点
    prams2{property}配置对象

    • 工具栏提示信息setNodeRemarks           

    prams{remark}提示信息对象

    exportData():是导出json数据

    7.3.3、模态框控制器

    可根据节点名称判断相关作用,具体的功能还没有写,所以暂时是这样

    8、附件

    附件一:gooflow详细API http://pan.baidu.com/s/1gfzCKON

    附件二:gooflow demo http://pan.baidu.com/s/1gfzCKON

    https://github.com/wangbeggar/demo

  • 相关阅读:
    学习 WebService 第三步:一个简单的实例(RAD+WAS 8.5开发SOAP项目)
    学习 WebService 第二步:知识准备——WSDL文件解析
    学习 WebService 第一步:体系结构、三元素SOAP/WSDL/UDDI
    在 IBM RAD 平台上基于 JAX-WS 开发 Web Services服务器端,客户端
    使用 SOAPUI 测试Web Service
    HTTP 方法:GET 对比 POST
    第一个 XMLHttpRequest 例子(API)
    JAVA基础知识之JVM-——JAVA关键字
    JAVA基础知识之JVM-——使用反射生成并操作对象
    JAVA基础知识之JVM-——通过反射查看类信息
  • 原文地址:https://www.cnblogs.com/jianjianwoshi/p/5130078.html
Copyright © 2011-2022 走看看