欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

轉(zhuǎn):傳智播客—jbpm與OA項(xiàng)目(八)續(xù)一

系統(tǒng) 2113 0

二、審批流轉(zhuǎn)之待我審批

?

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

?

clip_image002

?

?

?

1. 待我審批

?

/**

?

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

?

? */

?

public ActionForward taskList(ActionMapping mapping, ActionForm form,

?

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

?

??????? throws Exception {

?

??? // 獲取當(dāng)前頁(yè)碼

?

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

?

??? // 獲取當(dāng)前用戶

?

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

?

??? // 當(dāng)前用戶 未完成的 任務(wù)列表

?

??? 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;

?

??? // 獲取待我審批的任務(wù)數(shù)量

?

??? 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();

?

??? // 獲取待我審批的任務(wù)列表

?

??? 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();

?

??? // 頁(yè)面中需要顯示表單實(shí)例信息,且僅需要任務(wù)實(shí)例的 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. 審批頁(yè)面

?

????????

?

/**

?

? * 審批頁(yè)面

?

? */

?

public ActionForward approveUI(ActionMapping mapping, ActionForm form,

?

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

?

??????? throws Exception {

?

??? // 獲取表單實(shí)例 ID

?

??? Long formInstanceId = Long. parseLong (request

?

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

?

??? // 獲取表單實(shí)例,表單實(shí)例包含審批信息

?

??? 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 {

?

??? // 獲取表單數(shù)據(jù)

?

??? ApproveInfoActionForm actionForm = (ApproveInfoActionForm) form;

?

??? FormInstance formInstance = formInstanceService .getById(actionForm

?

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

?

??? // 獲取當(dāng)前用戶

?

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

?

??? // 創(chuàng)建審批信息

?

??? 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);

?

?

?

??? // 辦理任務(wù):審批

?

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

?

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

?

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

?

??? // 如果未通過(guò)

?

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

?

??????? // 停止任務(wù)向下流轉(zhuǎn)

?

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

?

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

?

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

?

??????? // 結(jié)束流程實(shí)例

?

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

?

??????? // 設(shè)置流程狀態(tài)為 未通過(guò)審批

?

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

?

??? }

?

??? // 如果審批通過(guò)

?

??? else {

?

??????? // 正常執(zhí)行任務(wù),向下流轉(zhuǎn)

?

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

?

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

?

??????? // 如果流程已結(jié)束 , 就代表本次為最后一個(gè)審批

?

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

?

??????????? // 設(shè)置流程狀態(tài)為 已通過(guò)審批

?

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

?

??????? }

?

??? }

?

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

?

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

?

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

OK ,待我審批完成!

?

?

?

三、表單查詢

?

???????? 這部分的內(nèi)容有“我的申請(qǐng)”、“經(jīng)我審批”和“所有表單”,其中涉及條件查詢?cè)诖司筒灰灰豢偨Y(jié)了。不過(guò)這些模塊中有一個(gè)十分有趣的功能——“查看流程圖”。

?

?

?

???????? 在以前的工作中,我經(jīng)涉及到圖片和畫(huà)板的應(yīng)用開(kāi)發(fā)。我的查看流程圖思路是將圖片畫(huà)到畫(huà)板上然后根據(jù)坐標(biāo)信息( gpd.xml )畫(huà)出對(duì)應(yīng)流程模塊的矩形,然后保存圖板圖,最后將圖片顯示到頁(yè)面。但湯老師的實(shí)現(xiàn)比較優(yōu)雅,直接將流程圖顯示到頁(yè)面,然后向頁(yè)面中添加一個(gè) div ,并設(shè)置 div 的坐標(biāo)、尺寸和邊框顏色。

?

?

?

???????? 由此可見(jiàn),我還需要一些工作經(jīng)驗(yàn)將這些技術(shù)熟練掌握!

?

?

?

???????? 通過(guò) OA 項(xiàng)目的學(xué)習(xí),使我知道應(yīng)該如何學(xué)習(xí)下一個(gè)項(xiàng)目——《教育辦公系統(tǒng)》。希望自己能將這個(gè)系統(tǒng)做的更好!

?

?

?

???????? 加油!

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

轉(zhuǎn):傳智播客—jbpm與OA項(xiàng)目(八)續(xù)一


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久精品小视频 | 人人干免费 | 亚婷婷洲AV久久蜜臀无码 | 久久国产免费看 | 国产精品久久久久久久久免费 | 欧美一区二区免费 | 国产欧美日韩精品a在线观看高清 | 国产午夜精品一区二区三区嫩草 | 国产精品色在线网站 | 欧美成人a∨高清免费观看 毛片特级 | 国产欧美性综合视频性刺激 | 天天天天天操 | 国产视频第一页 | 久久久成人精品视频 | 久久久国产99久久国产首页 | 色老师影院 | 久久福利青草精品免费 | 日本超碰 | 亚洲成人一区二区 | 午夜激情小视频 | 精品欧美一区二区vr在线观看 | 亚洲人成在线精品 | 日韩av不卡在线 | 久久亚洲在线 | 欧美第一色 | 久久精品2 | 久久女人被添全过程A片 | 国产精品午夜小视频观看 | 亚洲伊人久久综合 | 麻豆免费永久网址入口网址 | 91免费看片 | 精品一卡2卡三卡4卡免费观看 | 欧美日韩一区二区在线 | 久久久久国产成人精品亚洲午夜 | 性欧美精品久久久久久久 | 日韩在线观看毛片 | 狠狠躁日日躁夜夜躁A片小说按摩 | 欧美日韩精品一区二区三区在线观看 | 久操久热| 国产视频黄色 | 国产精品你懂的在线播放 |