亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

轉:傳智播客—jbpm與OA項目(八)續一

系統 2370 0

二、審批流轉之待我審批

?

???????? 待我審批,查看數據庫中的任務記錄,那些分配給“我”(由“我”負責)的任務,便是待我審批的任務。

?

clip_image002

?

?

?

1. 待我審批

?

/**

?

? * 待我審批(我的任務列表)

?

? */

?

public ActionForward taskList(ActionMapping mapping, ActionForm form,

?

??????? HttpServletRequest request, HttpServletResponse response)

?

??????? throws Exception {

?

??? // 獲取當前頁碼

?

??? int pageNum = RequestUtils. getIntParam (request, "pageNum" , 1);

?

??? // 獲取當前用戶

?

??? User user = (User) request.getSession().getAttribute( "user" );

?

??? // 當前用戶 未完成的 任務列表

?

??? PageView pageView = formInstanceService .getTaskPageView(user

?

??????????? .getEmployee(), pageNum);

?

??? request.setAttribute( "pageView" , pageView);

?

??? return mapping.findForward( "taskList" );

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

????????

?

其中的“ formInstanceService .getTaskPageView ”如下:

?

// 查詢 TaskInfo 的列表

?

@SuppressWarnings ( "unchecked" )

?

public PageView getTaskPageView(Employee employee, int pageNum) {

?

??? int pageSize = 10;

?

??? // 獲取待我審批的任務數量

?

??? int count = ((Number) getSession().createQuery( //

?

??????????? "SELECT COUNT(ti) FROM org.jbpm.taskmgmt.exe.TaskInstance ti WHERE actorId=? AND ti.end IS NULL" ) //

?

??????????? .setParameter(0, employee.getId().toString()) //

?

??????????? .uniqueResult()) //

?

??????????? .intValue();

?

??? // 獲取待我審批的任務列表

?

??? int firstResult = PageView. calcFirstResult (pageNum, pageSize);

?

??? List<TaskInstance> taskInstanceList = getSession().createQuery( //

?

??????????? "FROM org.jbpm.taskmgmt.exe.TaskInstance ti WHERE actorId=? AND ti.end IS NULL" ) //

?

??????????? .setParameter(0, employee.getId().toString()) //

?

??????????? .setFirstResult(firstResult) //

?

??????????? .setMaxResults(pageSize) //

?

??????????? .list();

?

??? // 頁面中需要顯示表單實例信息,且僅需要任務實例的 ID

?

??? List<FormInstance> formInstanceList = new ArrayList<FormInstance>();

?

??? for (TaskInstance ti : taskInstanceList) {

?

??????? FormInstance formInstance = (FormInstance) ti.getContextInstance().getVariable( "formInstance" );

?

??????? formInstance.setCurrentTaskInstanceId(ti.getId());

?

??????? formInstanceList.add(formInstance);

?

??? }

?

??? // 顯示

?

??? return new PageView(pageNum, pageSize, count, formInstanceList);

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

2. 審批頁面

?

????????

?

/**

?

? * 審批頁面

?

? */

?

public ActionForward approveUI(ActionMapping mapping, ActionForm form,

?

??????? HttpServletRequest request, HttpServletResponse response)

?

??????? throws Exception {

?

??? // 獲取表單實例 ID

?

??? Long formInstanceId = Long. parseLong (request

?

??????????? .getParameter( "formInstanceId" ));

?

??? // 獲取表單實例,表單實例包含審批信息

?

??? FormInstance formInstance = formInstanceService .getById(formInstanceId);

?

??? request.setAttribute( "formInstance" , formInstance);

?

??? return mapping.findForward( "approveUI" );

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

3. 審批

?

/**

?

? * 審批

?

? */

?

public ActionForward approve(ActionMapping mapping, ActionForm form,

?

??????? HttpServletRequest request, HttpServletResponse response)

?

??????? throws Exception {

?

??? // 獲取表單數據

?

??? ApproveInfoActionForm actionForm = (ApproveInfoActionForm) form;

?

??? FormInstance formInstance = formInstanceService .getById(actionForm

?

??????????? .getFormInstanceId());

?

??? // 獲取當前用戶

?

??? User user = (User) request.getSession().getAttribute( "user" );

?

??? // 創建審批信息

?

??? ApproveInfo approveInfo = new ApproveInfo();

?

??? approveInfo.setApprover(user.getEmployee());

?

??? approveInfo.setApproveTime( new Date());

?

??? approveInfo.setApproval(actionForm.isApproval());

?

??? approveInfo.setComment(actionForm.getComment());

?

??? approveInfo.setTaskInstanceId(actionForm.getTaskInstanceId());

?

??? approveInfo.setFormInstance(formInstance);

?

??? // 審批

?

??? formInstanceService .approve(approveInfo);

?

??? return mapping.findForward( "toTaskList" );

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

???????? 其中的“ formInstanceService .approve ”如下:

?

/**

?

? * 審批

?

? */

?

public void approve(ApproveInfo approveInfo) {

?

??? // 保存審批信息

?

??? getSession().save(approveInfo);

?

?

?

??? // 辦理任務:審批

?

??? FormInstance formInstance = approveInfo.getFormInstance();

?

??? TaskInstance ti = getJbpmContext().getTaskInstance(approveInfo.getTaskInstanceId());

?

??? ProcessInstance pi = ti.getProcessInstance();

?

??? // 如果未通過

?

??? if (!approveInfo.isApproval()) {

?

??????? // 停止任務向下流轉

?

??????? ti.setSignalling( false );

?

??????? ti.start();

?

??????? ti.end();

?

??????? // 結束流程實例

?

??????? pi.end();

?

??????? // 設置流程狀態為 未通過審批

?

??????? formInstance.setStatus(FormInstance. STATUS_NOT_APPROVED );

?

??? }

?

??? // 如果審批通過

?

??? else {

?

??????? // 正常執行任務,向下流轉

?

??????? ti.start();

?

??????? ti.end();

?

??????? // 如果流程已結束 , 就代表本次為最后一個審批

?

??????? if (pi.hasEnded()) {

?

??????????? // 設置流程狀態為 已通過審批

?

??????????? formInstance.setStatus(FormInstance. STATUS_APPROVED );

?

??????? }

?

??? }

?

??? // 需要手動更新流程數據(如果 FormInstance lazy 屬性為 false 呢!)

?

??? getSession().update(formInstance);

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

OK ,待我審批完成!

?

?

?

三、表單查詢

?

???????? 這部分的內容有“我的申請”、“經我審批”和“所有表單”,其中涉及條件查詢在此就不一一總結了。不過這些模塊中有一個十分有趣的功能——“查看流程圖”。

?

?

?

???????? 在以前的工作中,我經涉及到圖片和畫板的應用開發。我的查看流程圖思路是將圖片畫到畫板上然后根據坐標信息( gpd.xml )畫出對應流程模塊的矩形,然后保存圖板圖,最后將圖片顯示到頁面。但湯老師的實現比較優雅,直接將流程圖顯示到頁面,然后向頁面中添加一個 div ,并設置 div 的坐標、尺寸和邊框顏色。

?

?

?

???????? 由此可見,我還需要一些工作經驗將這些技術熟練掌握!

?

?

?

???????? 通過 OA 項目的學習,使我知道應該如何學習下一個項目——《教育辦公系統》。希望自己能將這個系統做的更好!

?

?

?

???????? 加油!

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

轉:傳智播客—jbpm與OA項目(八)續一


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品久久久久久搜索 | 亚洲伦理中文字幕一区 | 老师在办公室被躁到白浆 | 成人欧美在线视频 | 一区二区三区中文字幕 | 久久精品免视看国产盗摄 | 美女18隐私羞羞视频网站 | 婷婷国产成人久久精品激情 | 一级做a爰片性色毛片2021 | 中文字幕51精品乱码在线 | 国产成人免费片在线观看 | 欧美一级艳片视频免费观看 | 久艾草国产成人综合在线视频 | 欧美精品一区二区三区视频 | 日本一级毛片高清免费观看视频 | 四虎影永久在线观看精品 | h片免费在线观看 | 在线播放精品视频 | 天天爽夜夜爽天天做夜夜做 | a级片日韩 | 噜噜啪| 一级爱爱片 | 亚洲在线中文字幕 | 日韩视频亚洲 | 97精品福利视频在线 | 日本精品一二三区 | 亚洲综合第一欧美日韩中文 | 亚洲国产一区二区在线 | 久久精品久久久久 | www.欧美激情 | 久久精品亚洲日本波多野结衣 | 国产精品福利在线观看免费不卡 | 国产一二三区在线 | 欧美日产 | 国产精品高清在线 | 国产精品高清视亚洲一区二区 | 久久久久国产 | a毛片免费全部在线播放毛 a毛片免费在线观看 | 99精品在线看 | 国产在线播放成人免费 | 欧洲精品视频在线观看 |