Activiti八大接口常用功能API

部署流程

/**
     * 部署流程定义 	 类路径下(classPath)
     */
    @Test
    public void deploy() {
        // 获取部署对象
        Deployment deployment = repositoryService.createDeployment().name("员工请假流程222").addClasspathResource("processes/MyProcess.bpmn").addClasspathResource("processes/MyProcess.png").deploy();
        System.out.println("流程部署ID:" + deployment.getId());
        System.out.println("流程部署Name:" + deployment.getName());
    }


/**
 * 部署流程定义	zip
 */
public void deployByZip(MultipartFile file) {
	InputStream in = null;
	try {
		in = file.getInputStream();
	} catch (IOException e) {
		e.printStackTrace();
	}
	ZipInputStream zipInputStream = new ZipInputStream(in);
	repositoryService.createDeployment()
                    .addZipInputStream(zipInputStream)
                    .deploy();
}

@Test
public void deployByZip() {
    InputStream in = this.getClass().getClassLoader().getResourceAsStream("MyProcess.zip");
    ZipInputStream zipInputStream = new ZipInputStream(in);
    Deployment deploy = repositoryService.createDeployment().name("zip格式部署流程定义").addZipInputStream(zipInputStream).deploy();
    System.out.println("部署id为:" + deploy.getId() + ",部署名称为:" + deploy.getName());

}

启动流程

/**
 * 启动流程实例并设置流程变量
 */
@Test
public void startProcessTest() {
    String userId = "wangwu";
    //设置认证用户的id
    identityService.setAuthenticatedUserId(userId);
    Map variables = new HashMap<>();
    variables.put("applyUser", "luxuebing");
    variables.put("PM", "PM");
    variables.put("President", "President");
    variables.put("VP", "VP");
    variables.put("days", 5);
    ProcessInstance instance = runtimeService.startProcessInstanceByKey("myProcess", "66666", variables);
    System.out.println("流程实例id:>>>" + instance.getId());
}

查询

/**
 * 查询我要办理的任务
 */
@Test
public void getMyTask() {
	String assignee = "President";
	List list = taskService.createTaskQuery().taskAssignee(assignee).list();
	for (Task task : list) {
		System.out.println(task.toString() + "当前任务的办理人为:>>>" + taskService.getVariable(task.getId(), "President"));
	}
}

/**
 * 办理任务并且加上批注
 */
@Test
public void completeTask() {
	String taskId = "10005";
	Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
	String processInstanceId = task.getProcessInstanceId();
	String message = "总裁同意";
	//给当前任务添加批注信息
	taskService.addComment(taskId, processInstanceId, message);
	Map variables = new HashMap<>();
	variables.put("msg", "agree");
	taskService.complete(taskId, variables);
}

/**
 * 根据当前任务id查看当前流程图所处的活动节点信息
 */
@Test
public void findCoordinate() {
	//String taskId = "13";
	Task result = taskService.createTaskQuery().taskAssignee("President").singleResult();
	//通过任务id获取任务对象
	Task task = taskService.createTaskQuery().taskId(result.getId()).singleResult();
	//通过任务id获取流程定义id
	String processDefinitionId = task.getProcessDefinitionId();
	//通过流程定义id获取流程定义的实体对象(对应的是.bpmn文件中的数据)
	ProcessDefinitionEntity entity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);
	//通过任务id获取流程实例id
	String processInstanceId = task.getProcessInstanceId();
	//通过流程实例id获取当前活动对应的流程实例对象
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
	//获取当前的活动id
	String activityId = instance.getActivityId();
	//获取当前活动对象
	ActivityImpl activity = entity.findActivity(activityId);
	System.out.println("x坐标为:" + activity.getX() + "-----y坐标为:" + activity.getY() + "-----高度为:" + activity.getHeight() + "-----宽度为:" + activity.getWidth());
}

/**
 * 根据流程实例id查看当前流程实例是否结束
 */
@Test
public void findProcessState() {
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processInstanceId("5008").singleResult();
	if(Objects.isNull(instance)) {
		System.out.println("当前的流程实例已经结束。。。。");
	}
	HistoricProcessInstance singleResult = historyService.createHistoricProcessInstanceQuery().processInstanceId("5008").singleResult();
	System.out.println("历史流程实例id为:" + singleResult.getId() + "----开始时间为:" + singleResult.getStartTime() + "-----------结束时间为:" + singleResult.getEndTime());
}

/**
 * 根据用户id查询该用户发起的流程
 *
 * @return
 */
@Test
public void getHistoricProcessInstance() {
    String userId = "lisi";
    List list = historyService.createHistoricProcessInstanceQuery().startedBy(userId).list();
    for (HistoricProcessInstance historicProcessInstance : list) {
        System.out.println(historicProcessInstance.toString());
    }
}

/**
 * 查询指定用户发起的流程(流程历史  用户发起)
 * historyService.createHistoricProcessInstanceQuery()
 * .finished()//finished--> 完成的流程;  unfinish ---> 还在运行中的流程
 * .startedBy(name).orderByProcessInstanceStartTime().desc()
 * .listPage(firstResult, maxResults);
 */
@Test
public void findStartByMe() {
    List list = historyService.createHistoricProcessInstanceQuery().finished().startedBy("范冰冰").list();
    System.out.println(list);
}
/**
 * 查询指定用户参与的流程信息 (流程历史  用户参与 )
 * List hpis = historyService
 *	.createHistoricProcessInstanceQuery().involvedUser(name)
 *	.orderByProcessInstanceStartTime().desc().listPage(firstResult, maxResults);
 */

/**
 * 查询指定流程的任务流转路径 (流程历史 任务 流转 路经)
 * historyService.createHistoricTaskInstanceQuery()
 *	.processInstanceId(processInstanceId)
 *	.orderByHistoricTaskInstanceEndTime().asc().list();
 *
 */

/**
 * 查询我审批过的流程实例
 */
@Test
public void finishedByUser() {
    String assignee = "范冰冰";
    List list2 = new ArrayList<>();
    List list = historyService.createHistoricTaskInstanceQuery().taskAssignee(assignee).list();
    for (HistoricTaskInstance historicTaskInstance : list) {
        String processInstanceId = historicTaskInstance.getProcessInstanceId();
        list2.add(historyService.createHistoricProcessInstanceQuery()
                .processInstanceId(processInstanceId)
                .singleResult());
    }
    for (HistoricProcessInstance historicProcessInstance : list2) {
        System.out.println(historicProcessInstance);
    }
}


/**
 * 查看当前流程图的所在节点(单线流程,一个执行对象的时候)
 */
public void getCurrentView() {
    ActivityImpl activity = null;
    String processDefinitionId = "";//流程定义id
    String processInstanceId = "";//流程实例id
    ExecutionEntity entity = (ExecutionEntity) runtimeService.createExecutionQuery().processInstanceId(processInstanceId).singleResult();
    String activityId = entity.getActivityId();
    ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);
    List activities = definitionEntity.getActivities();
    for (ActivityImpl activityImpl : activities) {
        if (activityId.equals(activityImpl.getId())) {
            activity = activityImpl;
            break;
        }
    }
    System.out.println(activity);
}
/*@Test
public void startTest() {
    String id = "4";
    LeaveBill leaveBill = leaveBillDao.findLeaveBillById(id);
	//获取请假单实体的类名

// String key = leaveBill.getClass().getSimpleName();
//更新请假单状态从0变成1 表示审核中
leaveBill.setState(LeaveBillConstant.AUDIT_ING);
leaveBillDao.updateLeaveBill(leaveBill);
Map variables = Maps.newHashMap();
//从session中取出当前登录人,设置为提交申请任务的办理人
identityService.setAuthenticatedUserId(“范冰冰”);

    variables.put("applyUser", "范冰冰");
    //设置请假天数
    Integer days = leaveBill.getDays();
    variables.put("days", days);
    //将启动的流程实例关联业务
    String businessKey = id;
    runtimeService.startProcessInstanceByKey("myProcess", businessKey, variables);
}*/

/**
 * 查询我的待办任务列表
 */
@Test
public void taskTest() {
    List list = taskService.createTaskQuery().taskAssignee("范冰冰").list();
    String json = FastJsonUtils.serializeToJSON(list);
    System.out.println(json);
}

/**
 * 根据请假单id获取历史审批意见
 */
@Test
public void findCommentListByLeaveId() {
    String id = "3";
    HistoricProcessInstance hpi = historyService
            .createHistoricProcessInstanceQuery()
            .processInstanceBusinessKey(id)
            .singleResult();
    String processInstanceId = hpi.getId();
    List comments = taskService.getProcessInstanceComments(processInstanceId);
    System.out.println(comments);
}

你可能感兴趣的:(Activiti八大接口常用功能API)