二、設(shè)計(jì)流程
???????? 我們學(xué)習(xí)的內(nèi)容以“請(qǐng)假流程”為例。
1. 設(shè)計(jì)流程
開始 -> 提交申請(qǐng) -> 部門經(jīng)理審批 -> 結(jié)束:
|
開始 |
|
|
為其添加一個(gè)名稱為“提交申請(qǐng)”的 Task ,設(shè)置它的 Assignment 的 Actor 為“ #{applicantActorId} ”。 |
|
|
為其添加一個(gè)名稱為“審批”的 Task ,設(shè)置它的 Assignment 的 handler 為“ cn.itcast.oa.process.leave.DeptManagerAssignmentHandler ”。 |
|
|
結(jié)束 |
?
DeptManagerAssignmentHandler 類的實(shí)現(xiàn)明天再列出,將上面設(shè)計(jì)的流程部署到 OA 項(xiàng)目中。然后編寫測(cè)試類對(duì)流程進(jìn)行測(cè)試。因?yàn)槭褂? JBPM 流程在前邊已經(jīng)講過了,所以在些就不詳細(xì)列出了。上面的流程執(zhí)行過程為,開始:創(chuàng)建流程實(shí)例 à 辦理任務(wù):提交申請(qǐng) à 辦理任務(wù):部門經(jīng)理審批 à 結(jié)束。
?
三、表單實(shí)例
???????? 我們已經(jīng)將流程定義、表單定義搞定了和測(cè)試執(zhí)行流程,接下來我們應(yīng)該生成表單實(shí)例。將表單實(shí)例入到流程中進(jìn)行流轉(zhuǎn)處理。
?
???????? 通過第一部分的全景圖我們知道: FormDefinition 、 FormInstance 、 ApproveInfo 與 Employee 之間的關(guān)系。
???????? FormDefinition :表單定義,能過定義生成實(shí)例。
???????? FormInstance :表單實(shí)例,一個(gè)流程中只能有一個(gè)表單實(shí)例。
???????? ApproveInfo :審批信息,一個(gè)流程中可以具有多個(gè)審批。
???????? Employee :職員
?
FormInstance :
|
public class FormInstance { ??? // 表單狀態(tài)常量 ??? public static final String STATUS_PROCESSING = " 正在審批中 " ; ??? public static final String STATUS_APPROVED = " 已通過審批 " ; ??? public static final String STATUS_NOT_APPROVED = " 未通過審批 " ; ??? ??? private Long id ; ??? private FormDefinition formDefinition ; // 使用的表單定義 ??? private Map<String, Serializable> propertyMap = new HashMap<String, Serializable>(); // 表單信息 ? ??? private Employee applicant ; // 申請(qǐng)人 ??? private Date applyTime ; // 申請(qǐng)時(shí)間 ??? private String title ; // 標(biāo)題 ??? private String status ; // 狀態(tài) ??? private Set<ApproveInfo> approveInfos = new HashSet<ApproveInfo>(); // 審批信息 ??? private Long processInstanceId ; // 流程實(shí)例 ID //setters and getters… } |
?
ApproveInfo :
|
public class ApproveInfo { ??? private Long id ; ??? private Employee approver ; // 審批人 ??? private Date approveTime ; // 審批時(shí)間 ??? private FormInstance formInstance ; // 表單實(shí)例 ??? private boolean approval ; // 是否同意 ??? private String comment ; // 意見 ??? private Long taskInstanceId ; // 任務(wù)實(shí)例 ID //setters and getters… } |
?
???????? 現(xiàn)在看一看什么才是最重要的?就是這些實(shí)體,實(shí)體體現(xiàn)了業(yè)務(wù)邏輯。把業(yè)務(wù)邏輯搞明白了,實(shí)體設(shè)計(jì)出來了。實(shí)現(xiàn)上沒有什么太難的。
?
???????? 明日將學(xué)習(xí)具體生成表單實(shí)例并應(yīng)用到流程中,生成審批信息等。我們也可以查看自己的申請(qǐng)和待我申請(qǐng)等與審批模塊相關(guān)的操作信息。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

