工作流之流程跟踪图绘制

最近看到其它系统使用jquery.jsPlumb绘制流程图,效果还不错,于是也就动手学做一个!先看效果:

需要引用的js

        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
        <script type="text/javascript" src="js/jquery.tooltip.min.js"></script>
        <!-- support lib for bezier stuff -->
  <script type="text/javascript" src="js/jsBezier-0.2-min.js"></script>
  <!-- main jsplumb engine -->
  <script type="text/javascript" src="js/jsPlumb-1.3.2-RC1.js"></script>
  <!-- connectors, endpoint and overlays  -->
  <script type="text/javascript" src="js/jsPlumb-defaults-1.3.2-RC1.js"></script>
  <!-- SVG renderer -->
  <script type="text/javascript" src="js/jsPlumb-renderers-svg-1.3.2-RC1.js"></script>
  <!-- canvas renderer -->
  <script type="text/javascript" src="js/jsPlumb-renderers-canvas-1.3.2-RC1.js"></script>
  <!-- vml renderer -->
  <script type="text/javascript" src="js/jsPlumb-renderers-vml-1.3.2-RC1.js"></script>
  <!-- jquery jsPlumb adapter -->
  <script type="text/javascript" src="js/jquery.jsPlumb-1.3.2-RC1.js"></script>

下以是绘制的js:

$(document).ready(function () {
                $.getJSON('WFProcess.ashx?BillCode=<%=Request["BillCode"]%>&BuDataID=<%=Request["BuDataID"]%>', function (json) {
                    var fillColor = "gray";
                    //jsPlumb.setRenderMode(jsPlumb.VML);
                    jsPlumb.Defaults.Connector = ["Straight", { curviness: 50}];
                    jsPlumb.Defaults.DragOptions = { cursor: "pointer", zIndex: 2000 };
                    jsPlumb.Defaults.PaintStyle = { strokeStyle: fillColor, lineWidth: 2 };
                    jsPlumb.Defaults.EndpointStyle = { radius: 4, fillStyle: fillColor };

                    var anchors = [[0.5, 0, 0, -1], [1, 0.5, 1, 0], [0.5, 1, 0, 1], [0, 0.5, -1, 0]];
                    var arrowCommon = { foldback: 0.7, fillStyle: fillColor, width: 14 };
                    var aConnection = {
                        dynamicAnchors: anchors,
                        overlays: [
                        ["Arrow", { location: 0.7 }, arrowCommon]
                    ]
                    };

                    if (json.total > 0) {
                        $.each(json.list, function (i, row) {

                            var nodeDiv = document.createElement('div');
                            var nodeId = "window" + row.prcs_id;
                            $(nodeDiv)
                            .attr("id", nodeId)
                            .attr("to", row.to)
                            .addClass("window " + row.prcs_class)
                            .css({ "left": parseInt(row.left)/2.5, "top": (parseInt(row.top) + 60)/2.5 })
                            .attr("title", row.title)
                            .html('<table class="window-content"><tr><td>' + row.prcs_content + '</td></tr></table>');
                            $("#prcsList").append(nodeDiv);

                        });

                        //遍历节点并连线
                        $(".window").each(function () {
                            toArr = $(this).attr("to").split(",");
                            for (var i in toArr) {
                                if (toArr[i] != "" && $("#window" + toArr[i]).size() > 0 && this.id != "window" + toArr[i]) {
                                    jsPlumb.connect({ source: this.id, target: "window" + toArr[i] }, aConnection);
                                }
                            }
                        });

                        $("[title]").tooltip();
                    }
                });
                
            });

 

 

 

转载于:https://www.cnblogs.com/magicnet/p/3392697.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
? 跨浏览器,可兼容IE7--IE10, FireFox, Chrome, Opera等几大内核的浏览器,且不需要浏览器再加装任何控件。 ? 多系统兼容性、可移植性:由于只包括前台UI,因此二次开发者可很方便将本插件用在任何一种需要流程的B/S系统应用上,流程的详细实现逻辑完全交于后台程序开发者自己实现;对于后台,只要能返回/接收能被本插件解析的JSON格式数据即可.所以本插件可用于不同的服务器语言建立的后台上. ? 跨领域:流程设计器不止用在电信领域,在其它需要IT进行技术支持的领域中都有重大作用. ? 以下从纯技术实现层面具体描述: ? 页面顶部栏、左边侧边栏均可自定义; ? 当左边的侧边栏设为不显示时,为只读状态,此时的视区可当作是一个查看器而非编辑器。 ? 侧边工具栏除了基本和一些流程节点按钮外,还自定义新的节点按钮,自定义节点都可以有自有的标、类型名称,定义后在使用可可在工作区内增加这些自定义节点。 ? 顶部栏可显示流程数据组的标题,也可提供一些常用操作按钮。 ? 顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。 ? 可画直线、折线;折线还可以左右/上下移动其中段。 ? 具有区域划分功能,能让用户更直观地了解哪些节点及其相互间的转换,是属于何种自定义区域内的。 ? 具有标注功能,用橙红色标注某个结点或者转换线,一般用在展示流程进度时。 ? 能直接双击结点、连线、分组区域中的文字进行编辑 ? 在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。 ? 具有操作事务序列控制功能,在工作区内的各种有效操作都能记录到一个栈中,然后可以进行撤销(undo())或重做(redo()),像典型的C/S软件一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值