| 開發API URL調用接口 | 代碼開發API | FEE開發API |
| 登錄與門戶API |
| 首先要進行代碼集成與組織機構的集成其次在自己的系統登錄界面,登錄成功后要執行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: 查詢 |
| 創建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(); |
| 發送 - 要指定發送給誰?發送到那個節點?(萬能發送接口) |
| 如果程序員知道下一步要發送給誰,發送到那一個節點的情況下,就可以調用這個接口。該接口就會擺脫流程引擎設計的方向條件規則與接受人規則。 | //如果確定了(或者自己計算好了)下一步要達到的節點,下一步的接受人,就可以按照如下格式調用。 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); |