开发API程序员 URL调用接口 | 代码开发API | FEE开发API框架 |
登陆与门户API spa |
- 首先要进行代码集成与组织机构的集成
- 其次在本身的系统登陆界面,登陆成功后要执行ccbpm的框架登陆。
- 所谓的登陆就是调用ccbpm的登陆接口,如左边的代码所示。
|
// 以下代码须要写入您的系统校验密码与用户名以后。 string userNo = "zhangsan"; BP.WF.Dev2Interface.Port_Login(userNo);设计 |
菜单API 日志 |
- 发起:一个操做员能够发起的工做
- 待办:等待处理的工做。
- 在途:我参与的,可是这条流程尚未结束的流程。
- 抄送:不须要我处理,可是须要我知晓的工做。
|
发起: //得到指定人员的能够发起的流程列表,调用这个接口返回一个datatable, 能够参考一个demo实现发起列表的输出。 System.Data.DataTable dtStart = BP.WF.Dev2Interface.DB_GenerCanStartFlowsOfDataTable("zhangsan"); 待办: //得到指定人员的待办,调用这个接口返回一个datatable, 能够参考一个demo实现发起列表的输出。 DataTable dtTodolist = BP.WF.Dev2Interface.DB_GenerEmpWorksOfDataTable(); 在途: //得到指定人员的在途,调用这个接口返回一个datatable ,代码参考:。 DataTable dtRuning = BP.WF.Dev2Interface.DB_GenerRuning(); 查询: //ccbpm给你提供了一个link ,您能够调用这个link ,也能够本身去根据代码实现。 实现列表输出代码,请参考: http://localhost:2207/WF/App/Simple/Search.htm 运行Demo: 查询htm |
建立WorkID 对象 |
- 建立工做ID是启动流程的开始。
- ccbpm的工做ID是一个Int64位的整数,始终是按照顺序号+1产生的。
- 该workid全局惟一,而且没有重复性,该信息记录到Sys_Serial,WorkID的生成从100开始。
- 该workid全局惟一,而且没有重复性,该信息记录到Sys_Serial,WorkID的生成从100开始。
|
//传入流程编号,调用建立一个工做ID。 Int64 workid = BP.WF. Dev2Interface.Node_CreateBlankWork("001");接口 |
发送 - 简单发送开发 |
- 工做发送就是让节点向下运动。
- 调用接口执行发送后,返回一个执行结果的对象,该对象是流程引擎执行过程当中的变量。
- 解析该变量,能够检查出流程是否完成,运行到那一个节点上去了,下一个节点谁能够处理工做?
- 它的流向,是根据流程设计的规则执行的。
- 它的接收人,是根据接受人的规则肯定的。
|
//传入流程编号, WorkID执行发送. BP.WF.SendReturnObjs objs= BP.WF.Dev2Interface.Node_SendWork("001",workid); // 检查流程是否结束? bool isFlowOver = objs.IsStopFlow; // 得到发送到那个节点上去了? int toNodeID = objs.VarToNodeID; string toNodeName = objs.VarToNodeName; // 得到发送给谁了? 注意:这里若是是多个接受人员就会使用逗号分开。 string toEmpID = objs.VarAcceptersID; string toEmpName = objs.VarAcceptersName; // 输出提示信息, 这个信息能够提示给操做员. string infoMsg = objs.ToMsgOfHtml();get |
发送 - 要指定发送给谁?发送到那个节点?(万能发送接口) |
- 若是程序员知道下一步要发送给谁,发送到那一个节点的状况下,就能够调用这个接口。
- 该接口就会摆脱流程引擎设计的方向条件规则与接受人规则。
|
//若是肯定了(或者本身计算好了)下一步要达到的节点,下一步的接受人,就能够按照以下格式调用。 BP.WF.SendReturnObjs objs = null; objs = BP.WF.Dev2Interface.Node_SendWork("001", workid, 103, "zhangsan" ); //发送给一我的,若是发送给多我的用逗号分开好比: zhangsan,lisi,wangwu //下面调用方式,是知道要发送到那一个节点,可是不知道要发送给谁,让当前的节点定义的接受人规则来肯定。 objs = BP.WF.Dev2Interface.Node_SendWork("001", workid, 103, null); //下面调用方式,是知道要发送到那些人,可是不知道要发送到那个节点,让当前的节点定义的方向条件来肯定。 objs = BP.WF.Dev2Interface.Node_SendWork("001", workid, 103,"zhangsan"); // 输出提示信息, 这个信息能够提示给操做员. string infoMsg = objs.ToMsgOfHtml(); |
撤销 |
- 撤销是发送的逆向操做。
- 撤销能够调用ccbpm提供的撤销窗口完成,这是最简单的方式。
- 地址为:/WF/WorkOpt/UnSend.htm 参数为: FK_Flow,FK_Node,WorkID,FID,当前流程的4大参数。
- 若是须要在其余设备上工做,或者要本身写一个移交界面,请参考。
- 可否被撤销,是有当前活动节点的撤销规则所决定的。
- 撤销的功能显示在,在途的流程列表里,只有在途的工做才能被撤销。
- 在途工做:顾名思义,就是我参与的工做,而且工做还没有完成。
- 回滚流程,是在流程结束后须要从新在指定的节点,让指定的人员重新向下走。
|
/* *执行撤销,返回撤销是否成功信息,若是抛出异常就说明撤销失败。 *撤销失败的缘由多种,最有可能的是由于当前活动节点不容许撤销规则决定的。 */ string msg= BP.WF.Dev2Interface.Flow_DoUnSend("001", workID); |
回滚 |
- 回滚与撤销不一样的是回滚是在流程完成之后的操做,而且回滚是由管理员操做的。
- 回滚流程,是在流程结束后须要从新在指定的节点,让指定的人员重新向下走。
|
//执行回滚,返回的是回滚执行信息,若是回滚失败,则会抛出异常。 string msg= BP.WF.Dev2Interface.Flow_DoRebackWorkFlow("001", workID, 103, "由于审批错误,须要回滚,从节点103从新开始审批。"); |
退回 |
- 退回能够调用ccbpm提供的退回窗口完成,这是最简单的方式。
- 地址为:/WF/WorkOpt/ReturnWork.htm 参数为: FK_Flow,FK_Node,WorkID,FID,当前流程的4大参数。
- 若是须要在其余设备上工做,或者要本身写一个退回界面,请参考。
|
/* * 1, 得到当前节点能够退回的节点,该接口返回一个datatable。 * 2, 一个节点可以退回到那写节点是由当前节点的退回规则肯定的。 * 3, 调用退回须要三个参数:节点编号,工做ID, 流程ID, 对于线性流程FID始终等于0. */ System.Data.DataTable dtCanReturnNodes = BP.WF.Dev2Interface.DB_GenerWillReturnNodes(103, workid, 0); // 返回的是能够退回的节点。 //执行退回,当前的节点是103,要退回的节点是105, string msg = BP.WF.Dev2Interface.Node_ReturnWork("001", workid, 0, 103, 105, "您的申请信息不完整,请修改后从新发送。", false); |
移交 |
- 移交也能够调用ccbpm提供的移交窗口完成,这是最简单的方式。
- 地址为:/WF/WorkOpt/Forward.htm 参数为: FK_Flow,FK_Node,WorkID,FID,当前流程的4大参数。
- 移交就是把本身所要作的工做交给其余人处理。
- 若是须要在其余设备上工做,或者要本身写一个移交界面,请参考。
|
/* * 调用移交接口,传入必要的参数执行移交. * FID 在线性流程上始终等于0. */ BP.WF.Dev2Interface.Node_Shift("001", 103, workid, 0, "zhangsan", "因我须要出差,因此特把工做移交给您。"); /* * 撤销移交 * 若是在移交以后,发现不须要移交,就须要撤销回来,调用撤销移交接口。 */ BP.WF.Dev2Interface.Node_ShiftUn("001", workid); |
加签 |
- 加签也能够调用ccbpm提供的加签窗口完成,这是最简单的方式。
- 地址为:/WF/WorkOpt/Forward.htm 参数为: FK_Flow,FK_Node,WorkID,FID,当前流程的4大参数。
- 加签就是把本身所要作的工做参考其余人意见,或者让其余人处理。
- 加签有两种模式:1,加签后由加签人发送到下一个节点。2,加签后由让加签人发送给当前人,由当前人发送给下一个节点。
- 若是须要在其余设备上工做,或者要本身写一个加签界面,请参考。
|
/* * 调用加签接口,传入必要的参数执行. * FID 在线性流程上始终等于0. */ //技术人员zhangsan接受工做后,点击发送还会发送给当前人员,由当前人员发送给下一节点。 string info1= BP.WF.Dev2Interface.Node_Askfor(workid, BP.WF.AskforHelpSta.AfterDealSendByWorker, "zhangsan", "这里须要您出具技术鉴定意见."); //技术人员填写后,直接就发送了下一节点. string info2 = BP.WF.Dev2Interface.Node_Askfor(workid, BP.WF.AskforHelpSta.AfterDealSend, "zhangsan", "这里须要您出具技术鉴定意见."); //技术人员回复加签,在由当前人发送到下一个节点。 string infoReply = BP.WF.Dev2Interface.Node_AskforReply("001", 103, workid,0, "我已经出具了技术鉴定意见,请参考."); |
结束流程 |
- 流程结束有三种方式
- 第一种走到最后一个节点正常结束。
- 第二种在特定的节点上,用户须要终止流程向下运动(与删除流程不一样)。
- 第三种在特定的节点上,用户须要删除流程。
|
/* * 手工的结束流程,这种方式会记录日志. */ string overInfo = BP.WF.Dev2Interface .Flow_DoFlowOver("001" , workID, "该供应商找不到了,要结束掉该流程。"); /* * 删除流程, * 删除流程有多种方式,用户能够根据本身的需求,调用不一样的方式. * 最后一个参数是是否删除子流程. */ //按照标记删除流程 string delInfo0 = BP.WF.Dev2Interface .Flow_DoDeleteFlowByFlag("001", workID, "我不须要请假了", true); //完全的删除流程,无日志记录. string delInfo1 = BP.WF.Dev2Interface .Flow_DoDeleteFlowByReal("001", workID, "我不须要请假了", true); //完全的删除流程,有日志记录. string delInfo2 = BP.WF.Dev2Interface .Flow_DoDeleteFlowByWriteLog("001", workID, "我不须要请假了", true); |