驰骋BPM工作流后台常用接口与前台常用方法
一、流程引擎后台常用接口
接口说明
- 所谓的驰骋工作流引擎的接口,在BP.WF.Dev2Interface.cs上面的静态方法,前台页面通过这些静态方法通过页面于操作者提供交互数据功能交互。
- Port_* 开头的方法都是组织结构相关的操作,比如:登录、登出、发送消息。
- DB_*的都是提供数据列表的接口,比如:发起列表、待办列表、在途列表、完成列表等。
- 驰骋BPM工作流的发起、待办、在途菜单功能都是通过这个静态方法提供的BP.WF.Dev2Interface.DB_*接口生成的列表。
- 驰骋BPM的工作处理器创建工作ID、发送、退回、移交、删除、加签、会签等操作也是调用BP.WF.Dev2Interface.Node_*通过流程接口对流程的操作比如:流程的删除、回滚、撤销、冻结、取消冻结等流程的操作都是操作的BP.WF.Dev2Interface.Flow_*开发接口。
- 以WorkOpt_* 开头的方法,都是工作流引擎部件的代码,比如在退回窗口上,获取可以退回的节点列表,设置指定的节点处理人。
- 我们在流程属性里有一个接口,请参考如下图:
工作流引擎发起、待办、在途、已完成接口
获取数据是如何根据您自己的需要,通过CCBPM的接口获取想要的数据。
比如:发起流程,待办工作,在途工作。
类名:BP.WF. Dev2Interface.DT_* 在当前的静态方法中一般的返回的都是datatable数据集合类型,可以将它转化为json以方便前台生成列表。
发起列表:BP.WF. Dev2Interface.DB_GenerCanStartFlowsOfDataTable
发起列表是当前登录人员,或者指定人员可以发起的流程列表,返回的数据源包含 No,Name两个列,分别是流程模版编号,流程模版名称,可以连接到工作处理器 MyFlow.htm?FK_Flow=001 上让用户可以直接发起流程。
系统提供的功能页面:请参考/WF/Start.htm
待办列表:BP.WF. Dev2Interface.DB_ GenerEmpWorksOfDataTable
就是当前操作员的待办,需要他解决的问题,待办列表返回的是WorkID流程实例ID,Title流程实例标题,FK_Flow流程模版编号,FlowName流程模版名称等列,更多的信息请参考(Select * from WF_EmpWorks的视图)。开发者可以根据这个数据源生成待办数据列表,连接到MyFlow.htm,比如MyFlow.htm?WorkID=10112&FK_Flow=002&FK_Node=203
系统提供的功能页面:请参考/WF/Todolist.htm
在途列表: BP.WF. Dev2Interface.DB_ GenerRuningOfDataTable
顾名思义在途就是未完成的工作,并且我参与了,比如,我发起流程,他就是我的在途,我审批过的流程。对于在途流程的集合返回的列有,WorkID, Title 等。连接到工作查看器上比如,/WF/MyView.htm?WorkID=111&FK_Flow=001,在在途上可以执行,撤销或者催办操作。
系统提供的功能页面:请参考/WF/Runing.htm
已完成列表: BP.WF. Dev2Interface. DB_FlowComplete
我审批或发起的,并且已经结束的流程。对于已完成流程的集合返回的列有,WorkID, Title 等。
系统提供的功能页面:请参考/WF/Complete.htm
流程接口
流程接口是指对流程实例操作的接口,比如流程的催办、回滚、删除、冻结等操作。
流程的接口是以Flow_开头的接口,本操作手册不能及时与代码同步,最新的接口需要参考代码。
方法 | 方法名 | 参数 | 备注 |
Flow_DoFlowOver | 流程完成 | workID | |
Flow_DoPress | 催办 | workID | |
Flow_DoRebackWorkFlow | 回滚 | workID | |
Flow_DoDeleteFlowByFlag | 逻辑删除 | workID | |
Flow_DoUnDeleteFlowByFlag | 撤销逻辑删除 | workID | |
Flow_DoFix | 冻结 | workID | |
Flow_DoUnFix | 撤销冻结 | workID | |
Flow_DoDeleteFlowByReal | 彻底的删除 | workID | |
Flow_DoDeleteDraft | 删除草稿 | workID | |
Flow_DoUnSend | 撤销发送 | workID | |
Flow_IsCanDoCurrentWork | 判断是否可以处理当前工作 | workID | |
Flow_IsCanDeleteFlowInstance | 判断是否有删除流程实例的权限 | workID | |
Flow_IsCanStartThisFlow | 判断是否可以发起流程 | workID | |
Flow_SetFlowTitle | 设置流程标题 | workID | |
Flow_SetSDTOfFlow | 设置流程应完成日期 | workID | |
Flow_ReSend | 重新发送 | workID | |
Flow_DoComeBackWorkFlow | 把流程从非正常运行状态恢复到正常运行状态. | workID | 比如现在的流程的状态是,删除,挂起,现在恢复成正常运行。 |
工作流节点接口
节点接口是指对流程实例操作的接口,比如创建workid,执行发送,退回,移交,会签等操作。
接口是以Node_开头的接口,本操作手册不能及时与代码同步,最新的接口需要参考代码。
方法 | 方法名 | 参数 | 备注 |
Node_CreateBlankWork | 创建workid | ||
Node_SendWork | 执行发送 | ||
Node_ReturnWork | 执行退回 | ||
Node_SetWorkRead | 设置工作已读 | ||
Node_SetWorkUnRead | 设置工作未读 | ||
Node_Shift | 移交 | ||
Node_ShiftUn | 撤销移交 | ||
Node_Allot | 工作分配 | ||
Node_AddTodolist | 增加一个操作员 | ||
Node_AddNextStepAccepters | 增加指定步骤的操作员 | ||
Node_CC | 抄送 | ||
Node_CC_DoDel | 删除抄送 | ||
Node_CC_SetRead | 设置读取 | ||
Node_SetDraft | 设置为草稿 | ||
Node_SetDraft2Todolist | 把草稿转为待办 | ||
Node_HungUpWork | 挂起 | ||
Node_UnHungUpWork | 撤销挂起 | ||
WriteTrackInfo | 写入轨迹 | ||
WriteToSMS | 写入消息列表 | ||
WorkOpt_SetAccepter | 指定节点接收人 | ||
Port_SendMsg | 发送消息 |
BPM工作流系统登录接口
组织结构接口是指对组织结构操作的接口,登录、登出发送消息等操作。
接口是以Port_开头,本操作手册不能及时与代码同步,最新的接口需要参考代码。
方法 | 方法名 | 参数 | 备注 |
Port_Login | 登录 | UserNo | |
Port_SigOut | 退出登录 |
二、驰骋BPM工作流前端常用方法
工作流引擎常用接口说明
前端的主要接口,主要包括前端访问后台数据或方法、共用方法,主要集中封装在几个js文件中。
WF/Comm/Gener.js
Gener.js,主要封装了前台访问后台的方法,主要包含以下几个方法:
1.WebUser方法
作用:用于前台获取当前登陆人的信息
使用说明:
//先声明
var user=new WebUser();
//获取当前登陆人帐号
var no=user.No;
//获取当前登陆人姓名
var name=user.Name;
//获取当前登陆人部门编号
var fk_dept=user.FK_Dept;
//获取当前登陆人部门名称
var depName=user.FK_DeptName;
2. HttpHandler方法
作用:用于访问后台接口
使用说明:
//先声明接口所在位置(包名,namespace)以及类名,比如BP.AS.Handler包名下的App.cs
var handler=new HttpHandler("BP.AS.Handler.App");
//根据访问的接口,决定是否需要传递参数
handler.AddPara("参数名1","参数值1");
handler.AddPara("参数名2","参数值2");
//增加附件参数(所有控件类型为input[type=file]的数据)
handler.AddFileData();
//增加JSON格式数据
handler.AddJson("参数名","JSON格式数据");
.........省略......
//执行接口(GetDataList),并返回字符类型数据
var data=handler. DoMethodReturnString("GetDataList");
//执行接口(GetDataList),并返回JSON数据
var data=handler. DoMethodReturnJSON ("GetDataList");
3.替换表达式方法
作用:用于替换字符串的变量
变量格式:@+变量名
使用方法:
//替换字符串中的变量
var char=DealExp("字符串",new WebUser());
4.DBAccess方法
作用:执行SQL语句
使用方法:
//查询数据列表,返回值格式为JSON格式
var data=DBAccess. RunSQLReturnTable("查询语句");
//查询并返回只有一行一列的数据,返回值格式为字符类型
var data=DBAccess. RunSQLReturnVal ("查询语句");
//执行删除、更新
var data= DBAccess.RunSQL("SQL语句");
5.Entity方法
作用:对实体类进行操作,只能操作单条数据
使用方法:
以人员实体类为例(BP.Port.Emp)
//先声明一条数据,主键方式
var emp=new Entity("BP.Port.Emp","zhangsan");
//或
var emp=new Entity("BP.Port.Emp");
emp.Retrieve("类中存在列名","唯一值,并不一定的主键");
//取值,只要类中存在的值,都可以使用
var name=emp.Name;
//更新
emp.Name="张三";
emp.Update();
//删除
emp.Delete();
//插入
var emp=new Entity("BP.Port.Emp");
emp.SetValByKey("列名","值");
...省略......
emp.Insert();或者emp.DirectInsert();
Insert方法与DirectInsert方法不同之处在于,执行Insert方法时,系统会执行插入前、插入中、插入后三个事件,DirectInsert则只执行插入数据,不执行事件。
//某个值是否存在(比如判断帐号为zhangsan的数据是否存在)
var emp=new Entity("BP.Port.Emp","zhangsan");
var isexits=emp. IsExits();
true为存在,false为不存在
6.Entites方法
作用:对实体类进行操作,多条数据操作,Entity可以被认作是Entites的一条记录
使用方法:
以人员实体类为例(BP.Port.Emp)
//先声明一条数据,主键方式
var emps=new Entites ("BP.Port.Emp");
//返回值格式为JSON
emps.Retrieve("列名1","参数1","列名2","参数2","列名3","参数3".....);
或者,查询所有数据
emps. RetrieveAll();
//删除
emps.Delete();
WF/Script/ QueryString.js
QueryString.js,主要封装了获取url参数的方法
1.获取某个url参数的值
var DoType= GetQueryString("DoType");
2.获取通用的参数
//获取WorkID
var WorkID= RequestArgs.WorkID;
//获取FK_Flow
var WorkID= RequestArgs. Flow;
//获取FK_Node
var WorkID= RequestArgs. Node;
.....省略......
其他参数请参考该JS文件下的RequestArgs类
WF/Script/ bootstrap/ BootstrapUIDialog.js
改方法主要封装了模态弹出窗的方法。
使用方法:
//弹出模态框
function WinOpenParentMenu(url, title) {
//模态窗宽度
var W = document.body.clientWidth - 200;
//模态窗高度
var H = document.body.clientHeight - 100;
OpenBootStrapModal("URL", "eudlgframe", "模态窗标题", W, H, "icon-property", false, function () { }, null, function () {
//关闭后执行方法的方法,不需要时,可以为空
alert("关闭了");
});
}