Fk_flow:流程编号
userNo、BP.Web.WebUser.No:登录帐号
Fk_node:节点编号
Workid:工作ID
FID:父流程ID
1.系统登录
a) 前台登录:BP.WF.Dev2Interface.Port_Login(userNo);
b) 登录流程设计器:/WF/Admin/XAP/Designer.aspx
c) 自动登录流程设计器:/WF/Admin/XAP/Designer.aspx?userNo=admin&SID=1234556.
SID需要读取数据库中,对应admin的SID。
2.当前登陆人可以发起的流程(发起)
Dt=BP.WF.Dev2Interface.DB_GenerCanStartFlowsOfDataTable(BP.Web.WebUser.No);
3.当前登陆人可以处理的工作(待办)
Dt=BP.WF.Dev2Interface.DB_GenerEmpWorksOfDataTable(userNo,FK_Flow);
Dt=BP.WF.Dev2Interface.DB_GenerEmpWorksOfDataTable();
4.当前登陆人处理过的流程(在途)
Dt=BP.WF.Dev2Interface.DB_GenerRuning(userNo,FK_Flow);
Dt=BP.WF.Dev2Interface.DB_GenerRuning();
5.当前人收到的抄送信息(阅知件)
Dt=BP.WF.Dev2Interface.DB_CCList(userNo);
6.创建空白的WorkID:
Int64 workid=BP.WF.Dev2Interface.Node_CreateBlankWork(fk_flow);
CCBPM的工作ID是一个int64位的证书,始终是按照顺序号+1产生的。该值全局唯一,并没有重复性,该信息记录到Sys_Serial表中,Workid的生成冲100开始。
7.执行流程发送:
//执行发送
BP.WF.SendReturnObjs objs=BP.WF.Dev2Interface.Node_SendWork(fk_flow,workid);
//流程是否结束
Bool isFlowOver=objs.IsStopFlow;
//下一步节点ID
Int toNodeID=objs.VarToNodeID;
//下一步节点名称
String toNodeName=objs.VarToNodeName;
//下一步处理人ID
String toEmpID=objs.VarAcceptersID;
//下一步处理人名称
String toEmpName=objs.VarAcceptersName;
//发送后信息
String msgInfo=objs.ToMsgHtml();
发送说明:发送就是让节点向下运动。调用接口执行发送后,返回一个执行结果的对象SendReturnObjs,该对象是流程引擎执行过程中的编号,解析该变量,可以检查流程是否完成、晕倒到哪一个节点、一下节点由谁来执行工作。他的流向和接受人是根据流程设计的规则而定的。
Objs=BP.WF.Dev2Interface.Node_SendWork(fk_flow,workid,fk_node,userNo);
如果程序员知道下一步要送给谁、到达哪一步节点,可以调用上面的接口,该接口就会摆脱流程引擎的节点运行规则,自定义运行。
8.撤销发送:
String msg=BP.WF.Dev2Interface.Flow_DoUnSend(fk_flow,workid);
撤销是发送的逆向操作。能否被撤销,是根据当前活动节点的撤销规则决定的。
9.流程回滚:
String msg=BP.WF.Dev2Interface.Flow_DoRebackWorkFlow(fk_flow,worjid,fk_node,’回滚’);
回滚,是在流程结束后需要重新在指定的节点,让指定的人员重新向下运行。与撤销不同的是,回滚是在流程完成以后的操作,并且由管理员操作。
10.退回:
msg=BP.WF.Dev2Interface.Node_ReturnWork(fk_flow,workid,FID,fk_Node,toNodeID,toemp,’原因’,’是否原路返回’);
11.移交:
BP.WF.Dev2Interface.Node_Shift(fk_flow,fk_node,workid,FID,toemp,’原因’);
移交就是把自己所要做的工作交给其他人处理。
12.加签:
//A将工作加签给B后,B处理完成后,会发送给A,由A发送到下一步。 msg=BP.WF.Dev2Interface.Node_Askfor(workid,BP.WF.AskforHelpSta.AfterDealSendByWorder,toemp,’原因’);
//A将工作加签给B后,B处理完成后,直接发送到下一步。
Msg=BP.WF.Dev2Interface.Node_Askfor(workid,BP.WF.AskforHelpSta.AskDealSend,toemp,’原因’);
//A将工作加签给B后,B回复加签
Msg=BP.WF.Dev2Interface.Node_AskforReply(fj_flow,fk_node,workid,fid,’原因’);
加签说明:
加签就是把自己所要做的工作参考其他人意见,或者让其他人处理。它分为两种模式:1.加签后,由加签人发送到下一步。2.加签后,由加签人发给当前人,由当前人发送到下一步。
13.结束流程:
//点击结束按钮,结束流程,这种方式会记录日志
Info=BP.WF.Dev2Interface.Flow_DoFlowOver(fk_flow,workid,’原因’);
//按照标记删除流程
Info=BP.WF.Dev2Interface.Flow_DoDeleteFlowByFlag(fk_flow,workid,’原因’,true);
//彻底的删除流程,无日志记录
Info=BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(fk_flow,workid,’原因’,true);
//彻底删除流程,有日志记录
Info=BP.WF.Dev2Interface.Flow_DoDeleteFlowByWriteLog(fk_flow,workid,’原因’,true);
结束流程的三种方式说明:
第一种,走到最后一个节点,自动结束。
第二种,在指定的节点上,设置流程结束条件。流程运行到当前节点时,符合条件就执行结束,如果不符合,继续向下运行,一直到自动结束。
第三种,在指定的节点上,启用结束流程按钮,强制结束流程。