核三框架流程

1.流程定義
流程定義描述的是系統中有哪些種類的流程、每種流程包括哪幾個步驟(即環節),每個步驟有哪些後續步驟。
流程定義的內容存儲在數據庫表中,需要使用數據庫sql腳本完成流程定義的工作。數據庫表爲WF_ACTION_DEF(聯合主鍵爲流程定義(process_def_id)+ 環節定義(action_def_id))
2.流程權限菜單
配置
3.流程環節配置 表:WF_ACTION_DEF
流程環節配置
4.流程環節表 表:WF_WORK_ITEM
流程環節執行表
5.ER圖
整體ER圖
6.開啓流程 在流程的開始頁面中調用Service開啓流程,返回業務流水號

 public String startWf(IDTO dto) throws AppException{
    	 //組裝參數
//    	 Map<String,Object> paramsMap = dto.getData();
         StartWfParams startWfParams = new StartWfParams();
         startWfParams.setWfDefName("單位新登記");  	   //流程名稱
         startWfParams.setKeyData("新增單位登記記錄");  //業務關鍵信息
         startWfParams.setOperId(dto.getUserInfo().getOperID());       		   //操作員ID
         startWfParams.setBae006(dto.getUserInfo().getBAE001()); //經辦機構
         startWfParams.setDoCusService(true);      	   //是否執行業務service
         //開啓流程,並返回流水號
         String ywlsh = cn.sinobest.framework.util.WfUtil.startWf(startWfParams);
         System.out.println("這是新建的業務流水號:"+ywlsh);
         return ywlsh;
     }

7.生成環節 開啓流程時框架會生成相應的環節,環節有對應的業務流水號,狀態等信息
8.控制流程提交

     /* 新增單位信息提交後進入到審覈環節;
      * 審覈環節審覈通過則開始"結束審覈環節";
      * 審覈環節審覈不通過則回退到"單位信息在環節";
	  * @param dto
	  * @return 成功或失敗
	  * @throws Exception
	  */
     public void commitWf(IDTO dto) throws Exception{
    	  Map<String,Object> paramsMap = dto.getData();
    	  //得到前臺傳入的當前環節標誌
    	  String action_id = paramsMap.get("action_id").toString();
    	  System.out.println("action_id:"+action_id);
    	  IWorkflowCascade wfService = (IWorkflowCascade)Util.getBean("workflowCascadeService");
    	  SubmitWfParams wfParams = new SubmitWfParams();

    	  //業務流水號(WF_WORK_ITEM.BAE007)
    	  wfParams.setPid(paramsMap.get("ywlsh").toString()); 
    	  Map<String,Object> p = new HashMap<String, Object>();
    	  p.put("bae007", paramsMap.get("ywlsh").toString());
    	  p.put("action_id",action_id);
    	  Map<String,Object> params=commDAO.selectOne(DWGL + "ACTION_Q", p);
    	  String work_id=params.get("WORK_ITEM_ID").toString();
    
    	  //提交審覈環節或回退到登記環節
    	  if(action_id.equals("dwxdj_sh")){
    		//得到當前審覈結果
    		  String shjgStr = paramsMap.get("shjg").toString();
    		  if(shjgStr.equals("1")){
    			 wfParams.setSubmitType(SubmitType.NEXT);  //標識爲提交下一環節,流程繼續執行
    		  }else{
    			 wfParams.setSubmitType(SubmitType.BACK); //標識爲回退上一環節,流程回退到上一環節
    		  }
        	  //提交當前的登記環節,進入審覈環節
        	  wfParams.setWid(work_id);  	//環節號(WF_WORK_ITEM.WORK_ITEM_ID)
        	  wfParams.setAccepter("998"); 	//接收人
        	  wfParams.setJbr("998");       //經辦人
        	  wfParams.setKeyData("提交單位信息審覈");   //關鍵信息
        	  wfParams.setBae006(dto.getUserInfo().getBAE001()); //經辦機構
        	  wfParams.setComment("提交單位信息進入審覈環節"); //流程備註
        	  dto.setValue(IWorkflow.SUBMIT_PARAMS, wfParams);
        	  wfService.submitWf(dto);
        	  return ;
    	  }    	  
     }

執行一個流程時,當環節運行到結束環節,該流程的狀態會被置爲“結束”,表明整個流程已經結束。
9.小結:
9.1.編碼之前弄清楚整個業務邏輯的流程到底是怎樣的,這樣編碼的時候會事半功倍。
9.2.其實流程也不是很複雜,不要在心理上就抗拒它。
9.3.多練習多思考,理解最重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章