`

关于流程引擎的工作进度条的实现

阅读更多

 

关键字:驰骋工作流引擎 工作进度条实现 工作进度条接口 ccflow

简洁的效果图:

调用接口:BP.WF. Dev2Interface.DB_JobSchedule(int64 workid) ; 根据当前的workid获得流程的进度信息。

返回值说明:调用该接口后系统返回4个表,也就说4json数据。

 

中文名

英文名

概要介绍

流程信息表

WF_GenerWorkFlow

只有一条记录,标识流程运行运行的信息,流程的状态,是否结束,运行到那个节点上了。

您可能用到的节点:

FK_Node 流程运行到的节点.

WFState 流程的状态 2=运行中,3=已完成,5退回.

流程节点表

WF_Node

返回是一个集合,当前流程的所有节点的信息。NodeID,Name是重要的两个字段。

方向表

WF_Direction

返回是一个集合,节点的先后顺序,就是节点的连接线.

您可能用到的字段:

Node , 从节点ID.

ToNode,到节点ID

运动轨迹表

Track

返回的是一个集合,节点运动过程中的参与人,时间。

您可能用到的字段:

FK_Node, 发生的节点ID.

NodeName,节点名称。

EmpNo, 人员编号

EmpName, 人员名称

RDT, 发生日期时间

IsPass, 是否完成.

 

 

产生的JSONS结构截图:

 

流程信息表:

 

节点集合:

 

节点连接线:

 

 

 

运动轨迹表

 

 

 

 

 

 

附件完整的代码(可以不看实现过程):

   string sql = "";

            DataSet ds = new DataSet();

 

            /*

             * 流程控制主表, 可以得到流程状态,停留节点,当前的执行人.

             * 该表里有如下字段是重点:

             *  0. WorkID 流程ID.

             *  1. WFState 字段用于标识当前流程的状态..

             *  2. FK_Node 停留节点.

             *  3. NodeName 停留节点名称.

             *  4. TodoEmps 停留的待办人员.

             */

            GenerWorkFlow gwf = new GenerWorkFlow(workID);

            ds.Tables.Add(gwf.ToDataTableField("WF_GenerWorkFlow"));

 

 

            /*节点信息: 节点信息表,存储每个环节的节点信息数据.

             * NodeID 节点ID.

             * Name 名称.

             * X,Y 节点图形位置,如果使用进度图就不需要了.

            */

            NodeSimples nds = new NodeSimples(gwf.FK_Flow);

            ds.Tables.Add(nds.ToDataTableField("WF_Node"));

 

            /*

             * 节点的连接线.

             */

            Directions dirs = new Directions(gwf.FK_Flow);

            ds.Tables.Add(dirs.ToDataTableField("WF_Direction"));

 

            #region 运动轨迹

            /*

             * 运动轨迹: 构造的一个表,用与存储运动轨迹.

             *

             */

            DataTable dtHistory = new DataTable();

            dtHistory.TableName = "Track";

            dtHistory.Columns.Add("FK_Node"); //节点ID.

            dtHistory.Columns.Add("NodeName"); //名称.

            dtHistory.Columns.Add("EmpNo");  //人员编号.

            dtHistory.Columns.Add("EmpName"); //名称

            dtHistory.Columns.Add("RDT"); //记录日期.

            dtHistory.Columns.Add("SDT"); //应完成日期(可以不用.)

            dtHistory.Columns.Add("IsPass"); //是否通过?

            

            //执行人.

            if (gwf.WFState == WFState.Complete)

            {

                //历史执行人.

                sql = "SELECT * FROM ND" + int.Parse(gwf.FK_Flow) + "Track WHERE WorkID=" + workID + " AND (ActionType=1 OR ActionType=0)  ORDER BY RDT DESC";

                DataTable dtTrack = BP.DA.DBAccess.RunSQLReturnTable(sql);

 

                foreach (DataRow drTrack in dtTrack.Rows)

                {

                    DataRow dr = dtHistory.NewRow();

                    dr["FK_Node"] = drTrack["NDFrom"];

                    //dr["ActionType"] = drTrack["NDFrom"];

                    dr["NodeName"] = drTrack["NDFromT"];

                    dr["EmpNo"] = drTrack["EmpFrom"];

                    dr["EmpName"] = drTrack["EmpFromT"];

                    dr["RDT"] = drTrack["RDT"];

                    dr["SDT"] = "";

                    dr["IsPass"] = 1; // gwl.IsPassInt; //是否通过.

                    dtHistory.Rows.Add(dr);

                }

            }

            else

            {

                GenerWorkerLists gwls = new GenerWorkerLists(workID);

                foreach (GenerWorkerList gwl in gwls)

                {

                    DataRow dr = dtHistory.NewRow();

                    dr["FK_Node"] = gwl.FK_Node;

                    dr["NodeName"] = gwl.FK_NodeText;

                    dr["EmpNo"] = gwl.FK_Emp;

                    dr["EmpName"] = gwl.FK_EmpText;

                    dr["RDT"] = gwl.RDT;

                    dr["SDT"] = gwl.SDT;

                    dr["IsPass"] = gwl.IsPassInt; //是否通过.

                    dtHistory.Rows.Add(dr);

                }

            }

 

            if (dtHistory.Rows.Count == 0)

            {

                DataRow dr = dtHistory.NewRow();

                dr["FK_Node"] = gwf.FK_Node;

                dr["NodeName"] = gwf.NodeName;

                dr["EmpNo"] = gwf.Starter;

                dr["EmpName"] = gwf.StarterName;

                dr["RDT"] = gwf.RDT;

                dr["SDT"] = gwf.SDTOfNode;

                dtHistory.Rows.Add(dr);

            }

 

            ds.Tables.Add(dtHistory);

            #endregion 运动轨迹

 

            return ds;

 

 

分享到:
评论

相关推荐

    泰拉记事社的爬虫下载器,支持多线程下载与进度条显示.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    android开发揭秘PDF

    第14章 游戏引擎实现 14.1 游戏引擎介绍 14.1.1 什么是引擎 14.1.2 引擎的进化 14.1.3 常见的游戏引擎 14.1.4 Android游戏引擎 14.2 游戏引擎结构 14.2.1 游戏引擎原理 14.2.2 游戏引擎定位 14.2.3 游戏引擎框架 ...

    《Android应用开发揭秘》附带光盘代码.

     第14章 游戏引擎实现  14.1 游戏引擎介绍  14.1.1 什么是引擎  14.1.2 引擎的进化  14.1.3 常见的游戏引擎  14.1.4 Android游戏引擎  14.2 游戏引擎结构  14.2.1 游戏引擎原理  14.2.2 游戏引擎定位  ...

    《Android应用开发揭秘》源码

     第14章 游戏引擎实现  14.1 游戏引擎介绍  14.1.1 什么是引擎  14.1.2 引擎的进化  14.1.3 常见的游戏引擎  14.1.4 Android游戏引擎  14.2 游戏引擎结构  14.2.1 游戏引擎原理  14.2.2 游戏引擎定位  ...

    Android应用开发揭秘pdf高清版

    第14章 游戏引擎实现 14.1 游戏引擎介绍 14.1.1 什么是引擎 14.1.2 引擎的进化 14.1.3 常见的游戏引擎 14.1.4 Android游戏引擎 14.2 游戏引擎结构 14.2.1 游戏引擎原理 14.2.2 游戏引擎定位 14.2.3 游戏引擎框架 ...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    asp.net知识库

    如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] ...

    ASP.NET3.5典型模块开发源代码

    14.1.2 搜索引擎的实现原理 161 14.1.3 搜索引擎的相关技术 162 14.2 用第三方的API实现搜索 162 14.2.1 使用Google API 163 14.2.2 使用百度 API 164 14.3 小结 168 第15章 网站统计模块 169 15.1 ...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

Global site tag (gtag.js) - Google Analytics