Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录
概述
需求:
设计思路
实现思路分析
1.涉及流程图
这里我们可以使用规则的数据结构来存储和转发。
2.部署流程
下载器我们可以使用建立HTTP请求把界面的URL元素下载下来。实质就是
下载器。
3.代码测试
package wf;
import org.activiti.engine.*;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class APIFun {
public void testName() throws Exception {
ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
config.setJdbcDriver("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost:3306/dev");
config.setJdbcUsername("root");
config.setJdbcPassword("123456");
// config.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
ProcessEngine engine = config.buildProcessEngine();
System.out.println(engine);
System.out.println(engine);
}
ProcessEngine processEngine = null;
ProcessInstance pi=null;
@Before
public void queryProcdef(){
ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
config.setJdbcDriver("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost:3306/dev");
config.setJdbcUsername("root");
config.setJdbcPassword("123456");
// config.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
processEngine = config.buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
//创建查询对象
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
//添加查询条件
query.processDefinitionKey("process1668059605521");//通过key获取
// .processDefinitionName("My process")//通过name获取
// .orderByProcessDefinitionId()//根据ID排序
//执行查询获取流程定义明细
List<ProcessDefinition> pds = query.list();
for (ProcessDefinition pd : pds) {
System.out.println("ID:"+pd.getId()+",NAME:"+pd.getName()+",KEY:"+pd.getKey()+",VERSION:"+pd.getVersion()+",RESOURCE_NAME:"+pd.getResourceName()+",DGRM_RESOURCE_NAME:"+pd.getDiagramResourceName());
}
//与正在执行的流程实例和执行对象相关的Service
String processDefinitionKey="process1668059605521";
pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,key对应application.bpmn文件中id的属性值,使用key值启动,默认是按照最新 //版本的流程定义启动
System.out.println("流程实例ID:"+pi.getId());
System.out.println("流程定义ID:"+pi.getProcessDefinitionId());
}
/**
* 查看任务
*/
@Test
public void queryTask(){
//获取任务服务对象
TaskService taskService = processEngine.getTaskService();
RepositoryService repositoryService = processEngine.getRepositoryService();
//根据接受人获取该用户的任务
/* List<Task> tasks = taskService.createTaskQuery()
.taskAssignee("001508")
.list();
for (Task task : tasks) {
System.out.println("ID:"+task.getId()+",姓名:"+task.getName()+",接收人:"+task.getAssignee()+",开始时间:"+task.getCreateTime());
}
*/
//根据流程实例 ID 获取当前活动任务
Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).active().singleResult();
String taskId = task.getId();
System.out.println("任务ID"+taskId);
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(task.getProcessDefinitionId());
List<ActivityImpl> activitiList = def.getActivities(); // rs是指RepositoryService的实例
}
@Test
public void startTask(){
TaskService taskService = processEngine.getTaskService();
//taskId 就是查询任务中的 ID
String taskId = "204";
//完成请假申请任务
taskService.complete(taskId );
}
}
参考资料和推荐阅读
- 暂无
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~