流程测试

发表时间:2018-05-05 16:56:04 浏览量( 13 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

流程设计完毕后我们可以先使用测试类进行测试的。

1、部署流程,代码如下,比较简单

	@Test
	public void testDeploy() {

		DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
		deploymentBuilder.addClasspathResource("diagrams/leave.bpmn");
		deploymentBuilder.name("leave");
		deploymentBuilder.category("请假");
		Deployment deployment = deploymentBuilder.deploy();

		System.out.println(deployment.getId() + ":" + deployment.getCategory()
		+ ":" + deployment.getName() + ":"
		+ deployment.getDeploymentTime());

		// repositoryService.createDeployment().addInputStream("mySeondSpring.bpmn20.xml",new
		// FileInputStream(filename)).deploy();
	}


2、启动流程,可以看到,我们在启动流程时把一些数据保存到流程中,并设置了流程的作者。

	/**
	 * 启动流程
	 * 
	 * @throws Exception
	 */
	@Test
	public void testStart() throws Exception {

		String loginUserId = "liubao";

		//业务数据
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("days", "20");
		variables.put("projectManager", "liuProjectManager");
		variables.put("reason", "请假原因");
		variables.put("startTime", "2017-07-01");
		variables.put("endTime", "2017-07-21");

		identityService.setAuthenticatedUserId(loginUserId);
		// 源代码,启动的时候会读取AuthenticatedUserId的值,然后再启动
		// String initiatorVariableName = (String)
		// getProperty(BpmnParse.PROPERTYNAME_INITIATOR_VARIABLE_NAME);
		// if(initiatorVariableName!=null) {
		// String authenticatedUserId = Authentication.getAuthenticatedUserId();
		// processInstance.setVariable(initiatorVariableName, authenticatedUserId);
		// }
		ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave", variables);
		assertNotNull(processInstance.getId());

	}


3、查看个人待办,这里给出的时项目管理员的待办,其他人的代码类似,可以自己查看源代码

	// 项目管理员查看任务
	@Test
	public void testGetTaskByUserId() throws Exception {

		String assignee = "liuProjectManager";
		String processDefinitionKey = "";

		// List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee)
		// .processDefinitionKey(processDefinitionKey)
		// .orderByTaskPriority().desc().orderByDueDateNullsFirst().desc()
		// .listPage(0, 10);
		// 所有待办,不区分那个流程的。
		List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).listPage(0, 10);

		for (Task task : tasks) {
			System.out.println("任务 id:" + task.getId());
			System.out.println("任务负责人:" + task.getAssignee());
			System.out.println("任务名称:" + task.getName());
			System.out.println("任务时间:" + task.getCreateTime());
			System.out.println("处理务时间:" + task.getDueDate());
			System.out.println("formKey:" + task.getFormKey());
			System.out.println("" + task.getProcessDefinitionId());
			
			//获得流程变量
			System.out.println(taskService.getVariable(task.getId(), "days"));
		}

		Assert.assertNotNull(tasks);

		Assert.assertTrue(tasks.size() > 0);

	}


4、办理任务,其他人的类似

	// 项目管理员查看任务办结
	@Test
	public void testComTask1() throws Exception {

		String taskId = "202509";
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("deptManager", "liuDeptManager");
		variables.put("apply", "true");
		taskService.complete(taskId, variables);

	}


5、这里再列出以下发送给会签的办理任务的测试类

	//  项目总监任务办结
	@Test
	public void testComTaskDeptBoss() throws Exception {
		String taskId = "207504";
		Task task=taskService.createTaskQuery().taskId(taskId).singleResult();
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("apply", "true");
		variables.put("notApply", "0");
		
		List<String> users=new ArrayList<String>();
		users.add("test1");
		users.add("test2");
		
		variables.put("users", users);
		
		taskService.complete(taskId, variables);
		
		 /**判断流程是否结束,查询正在执行的执行对象表*/
        ProcessInstance rpi = processEngine.getRuntimeService()//
                        .createProcessInstanceQuery()//创建流程实例查询对象
                        .processInstanceId(task.getProcessInstanceId())
                        .singleResult();
        //说明流程实例结束了
        if(rpi==null){
            /**查询历史,获取流程的相关信息*/
            HistoricProcessInstance hpi = processEngine.getHistoryService()//
                        .createHistoricProcessInstanceQuery()//
                        .processInstanceId(task.getProcessInstanceId())//使用流程实例ID查询
                        .singleResult();
            System.out.println(hpi.getId()+"    "+hpi.getStartTime()+"   "+hpi.getEndTime()+"   "+hpi.getDurationInMillis());
        }

	}


两个人都会收到任务,你可以自己查看以下。具体可以参考源代码

上面的测试类,都比较繁琐,你可以自己封装一些工具类使用。