workflow例子.docx

上传人:b****8 文档编号:9608333 上传时间:2023-02-05 格式:DOCX 页数:17 大小:34.78KB
下载 相关 举报
workflow例子.docx_第1页
第1页 / 共17页
workflow例子.docx_第2页
第2页 / 共17页
workflow例子.docx_第3页
第3页 / 共17页
workflow例子.docx_第4页
第4页 / 共17页
workflow例子.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

workflow例子.docx

《workflow例子.docx》由会员分享,可在线阅读,更多相关《workflow例子.docx(17页珍藏版)》请在冰豆网上搜索。

workflow例子.docx

workflow例子

Jbpm4.0工作流的例子借款申请流程

关键字:

jbpm4例子借款申请流程工作流

正在学习jbpm4,于是就写了个例子

这个例子的流程就用借款申请的流程,因为学jbpm3的时候对这个例子比较熟悉.

流程图如下:

流程定义:

Xml代码

1.

xml version="1.0" encoding="UTF-8"?

>  

2.

//jbpm.org/4.0/jpdl">  

3.    

4.      

5.    

6.    

7.    

8.      

9.    

10.    

11.    

12.    

-36,62" name="部门经理驳回" to="cancel" />  

13.      

14.    

15.    

16.  

'>=5000元':

'<5000元'}"   

17.             g="301,205,48,48" name="金额判断">  

18.      

19.      

20.    

21.    

22.    

23.    

24.    

25.    

26.      

27.      

28.    

29.    

30.    

31.      

32.    

33.  

xmlversion="1.0"encoding="UTF-8"?

>

//jbpm.org/4.0/jpdl">

-36,62"name="部门经理驳回"to="cancel"/>

'>=5000元':

'<5000元'}"

g="301,205,48,48"name="金额判断">

测试代码:

Java代码

1./** 

2. * CopyRight (C) 2006-2009 yeyong 

3. * @author yy 

4. * @project JbpmExamples 

5. * @version 1.0 

6. * @mail yy629_86 at 163 dot com 

7. * @date 2009-9-9 下午3:

12:

13 

8. * @description 

9. */  

10.package loan;  

11.  

12.import java.util.HashMap;  

13.import java.util.List;  

14.import java.util.Map;  

15.  

16.import org.jbpm.api.ProcessInstance;  

17.import org.jbpm.api.history.HistoryProcessInstance;  

18.import org.jbpm.api.task.Task;  

19.import org.jbpm.test.JbpmTestCase;  

20.  

21./** 

22. * @author yeyong 

23. */  

24.public class LoanTest extends JbpmTestCase {  

25.  String deploymentId;  

26.  

27.  @Override  

28.  protected void setUp() throws Exception {  

29.    super.setUp();  

30.    deploymentId = repositoryService.createDeployment().addResourceFromClasspath("loan/loan.jpdl.xml")  

31.        .deploy();  

32.  }  

33.  

34.  @Override  

35.  protected void tearDown() throws Exception {  

36.    repositoryService.deleteDeploymentCascade(deploymentId);  

37.    super.tearDown();  

38.  }  

39.  

40.  /** 

41.   * 测试用例 

42.   * 

 

43.   * 张三 申请4000元, 部门经理驳回 

44.   */  

45.  public void test4000ButManagerDisapprove() {  

46.    String curUser = "Zhang San";  

47.    ProcessInstance pi = startLoanProcess(curUser);  

48.    String piId = pi.getId();  

49.    filloutApplication(piId, curUser, 4000);  

50.  

51.    curUser = "manager";  

52.    managerApprove(piId, curUser, false, "最近资金紧张,暂不同意."); // 部门经理不同意  

53.  

54.    pi = executionService.findProcessInstanceById(piId);  

55.    assertNull(pi); // 流程结束  

56.  

57.    HistoryProcessInstance hpi = getHistoryProcessInstanceByProcessInstanceId(piId);  

58.    assertEquals(hpi.getState(), "cancel"); // 流程结束状态是cancel , 取消  

59.  }  

60.  

61.  /** 

62.   * 测试用例 

63.   * 

 

64.   * 李四 申请4000元,部门经理同意 

65.   */  

66.  public void test4000AndManagerApprove() {  

67.    String curUser = "Li si";  

68.    ProcessInstance pi = startLoanProcess(curUser);  

69.    String piId = pi.getId();  

70.    filloutApplication(piId, curUser, 4000);  

71.  

72.    curUser = "manager";  

73.    managerApprove(piId, curUser, true, "同意."); // 部门经理同意  

74.  

75.    pi = executionService.findProcessInstanceById(piId);  

76.    assertNotNull(pi); // 流程未结束  

77.    assertNotNull(pi.findActiveExecutionIn("财务拨款")); // 财务拨款处于活动状态  

78.  

79.    curUser = "finance";  

80.    earmark(piId, curUser, piId); // 拨款  

81.  

82.    pi = executionService.findProcessInstanceById(piId);  

83.    assertNull(pi); //流程结束  

84.  

85.    HistoryProcessInstance hpi = getHistoryProcessInstanceByProcessInstanceId(piId);  

86.    assertEquals(hpi.getState(), "ended"); // 流程结束状态是ended, 正常结束  

87.  }  

88.  

89.  /** 

90.   * 测试用例 

91.   * 

 

92.   * 王五 申请6000元,部门经理驳回 

93.   */  

94.  public void test6000ButManagerDisapprove() {  

95.    String curUser = "Wang Wu";  

96.    ProcessInstance pi = startLoanProcess(curUser);  

97.    String piId = pi.getId();  

98.    filloutApplication(piId, curUser, 6000);  

99.  

100.    curUser = "manager";  

101.    managerApprove(piId, curUser, false, "最近资金紧张,暂不同意.");  

102.  

103.    pi = executionService.findProcessInstanceById(piId);  

104.    assertNull(pi);  

105.  

106.    HistoryProcessInstance hpi = getHistoryProcessInstanceByProcessInstanceId(piId);  

107.    assertEquals(hpi.getState(), "cancel");  

108.  }  

109.  

110.  /** 

111.   * 测试用例 

112.   * 

 

113.   * 赵六 申请6000元,部门经理同意,总经理驳回 

114.   */  

115.  public void test6000AndManagerApproveButCeoDisapprove() {  

116.    String curUser = "Zhao Liu";  

117.    ProcessInstance pi = startLoanProcess(curUser);  

118.    String piId = pi.getId();  

119.    filloutApplication(piId, curUser, 6000);  

120.  

121.    curUser = "manager";  

122.    managerApprove(piId, curUser, true, "同意. manager");  

123.    pi = executionService.findProcessInstanceById(piId);  

124.    assertNotNull(pi);  

125.    assertNotNull(pi.findActiveExecutionIn("总经理审批"));  

126.  

127.    curUser = "ceo";  

128.    ceoApprove(piId, curUser, false, "不同意.等资金周转过来再说吧");  

129.  

130.    pi = executionService.findProcessInstanceById(piId);  

131.    assertNull(pi);  

132.  

133.    HistoryProcessInstance hpi = getHistoryProcessInstanceByProcessInstanceId(piId);  

134.    assertEquals(hpi.getState(), "cancel");  

135.  }  

136.  

137.  /** 

138.   * 测试用例 

139.   * 

 

140.   * 孙七 申请6000元,部门经理同意,总经理也同意 

141.   */  

142.  public void test6000AndManagerApproveAdnCeoApprove() {  

143.    String curUser = "Sun Qi";  

144.    ProcessInstance pi = startLoanProcess(curUser);  

145.    String piId = pi.getId();  

146.    filloutApplication(piId, curUser, 6000);  

147.  

148.    curUser = "manager";  

149.    managerApprove(piId, curUser, true, "同意. manager");  

150.    pi = executionService.findProcessInstanceById(piId);  

151.    assertNotNull(pi);  

152.    assertNotNull(pi.findActiveExecutionIn("总经理审批"));  

153.  

154.    curUser = "ceo";  

155.    ceoApprove(piId, curUser, true, "同意. ceo");  

156.    pi = executionService.findProcessInstanceById(piId);  

157.  

158.    assertNotNull(pi);  

159.    assertNotNull(pi.findActiveExecutionIn("财务拨款"));  

160.  

161.    curUser = "finance";  

162.    earmark(piId, curUser, piId);  

163.    pi = executionService.findProcessInstanceById(piId);  

164.    assertNull(pi);  

165.  

166.    HistoryProcessInstance hpi =   

167.                   getHistoryProcessInstanceByProcessInstanceId(piId);  

168.    assertEquals(hpi.getState(), "ended");  

169.  }  

170.  

171.  /** 

172.   * 用户发起借款申请 

173.   *  

174.   * @param userId 

175.   * @return 

176.   */  

177.  protected ProcessInstance startLoanProcess(String user) {  

178.    Map variables = new HashMap();  

179.    variables.put("proposer", user);  

180.    return executionService.startProcessInstanceByKey("loan", variables);  

181.  }  

182.  

183.  /** 

184.   * 填写借款申请 

185.   *  

186.   * @param piId 

187.   * @param user 

188.   * @param money 

189.   */  

190.  protected void filloutApplication(String piId, String user, double money) {  

191.    List tasks = taskService.findPersonalTasks(user);  

192.    Task filloutTask = null;  

193.    for (Task task :

 tasks) {  

194.      if (task.getExecutionId().equals(piId)) {  

195.        filloutTask = task;  

196.        break;  

197.      }  

198.    }  

199.    assertNotNull(filloutTask);  

200.    Map variables = new HashMap();  

201.    variables.put("money", money);  

202.    executionService.setVariables(piId, variables);  

203.    taskSpleteTask(filloutTask.getId());  

204.  }  

205.  

206.  /** 

207.   * 经理审批 

208.   *  

209.   * @param piId 

210.   * @param user 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1