package test.service;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
public class WorkFlowService {
//ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
private RepositoryService repositoryService;
private RuntimeService runtimeService;
private TaskService taskService;
private HistoryService historyService;
private ManagementService managementService;
private IdentityService identityService;
public void setRepositoryService(RepositoryService repositoryService) {
this.repositoryService = repositoryService;
}
public void setRuntimeService(RuntimeService runtimeService) {
this.runtimeService = runtimeService;
}
public void setTaskService(TaskService taskService) {
this.taskService = taskService;
}
public void setHistoryService(HistoryService historyService) {
this.historyService = historyService;
}
public void setManagementService(ManagementService managementService) {
this.managementService = managementService;
}
public void setIdentityService(IdentityService identityService) {
this.identityService = identityService;
}
/**
* 部署流程定义
*/
public void deploymentProcessDefinition_inputStream(){
InputStream inputStreamBpmn = this.getClass().getResourceAsStream("helloworld.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream("helloworld.png");
Deployment deployment =repositoryService
.createDeployment()
.name("请假流程")
.addInputStream("helloworld.bpmn", inputStreamBpmn)
.addInputStream("helloworld.png", inputStreamPng)
.deploy();
System.out.println("部署ID:"+deployment.getId());
System.out.println("部署名称"+deployment.getName());
}
/**启动流程*/
public ProcessInstance startProcessInstance(String processDefinitionKey ){
ProcessInstance pi = runtimeService
.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程实例ID"+pi.getId());//流程实例ID
System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID
return pi;
}
/**
* 根据流程实例ID获取历史表的流程定义实体
* 当流程走完时,要查询流程定义图只能通过在历史表找到历史流程实例对象
* @param instanceId
* @return
*/
public HistoricProcessInstance getHistoricActivityInstanceByInstanceId(String instanceId){
return historyService.createHistoricProcessInstanceQuery().processInstanceId(instanceId).list().get(0);
}
/**查询个人任务*/
public List<Task> findMyPersonalTask(String assignee ){
List<Task> list = taskService
.createTaskQuery()//创建查询
.taskAssignee(assignee)//根据一个人来查询
//.taskCandidateGroup(assignee)根据组来查询
// .taskCandidateUser(candidateUser)//根据多个人来查询
// .processDefinitionId(processDefinitionId)
// .processInstanceId(processInstanceId)
// .executionId(executionId)
.orderByTaskCreateTime().asc()//根据任务时间升序排序
// .singleResult()//
// .count()//
// .listPage(firstResult, maxResults);//分页查询
.list();//
// if(list!=null && list.size()>0){
// for(Task task:list){
// System.out.println("任务ID:"+task.getId());
// System.out.println("任务名称:"+task.getName());
// System.out.println("任务创建时间:"+task.getCreateTime());
// System.out.println("任务当前执行人:"+task.getAssignee());
// System.out.println("任务所属的流程实例ID:"+task.getProcessInstanceId());
// System.out.println("任务当前执行人ID:"+task.getExecutionId());
// System.out.println("任务所属的流程定义ID:"+task.getProcessDefinitionId());
// System.out.println("########################################################");
// }
// }
return list;
}
/**
* 根据任务ID获取任务实体
* @param taskId
* @return
*/
public Task getTaskById(String taskId){
Task t= taskService
.createTaskQuery().taskId(taskId).singleResult();
return t;
}
/**
* 根据流程实例ID获取任务实体
* @param taskId
* @return
*/
public Task getTaskByProcessInstanceId(String processInstanceId){
Task t= taskService
.createTaskQuery().processInstanceId(processInstanceId).singleResult();
return t;
}
/**
* 获取流程定义图
* @param task
* @return
*/
public InputStream getProcessImgByProcessDefinitionId(String processDefinitionId){
ProcessDefinition procDef = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
String diagramResourceName = procDef.getDiagramResourceName();
InputStream imageStream = repositoryService.getResourceAsStream(
procDef.getDeploymentId(), diagramResourceName);
return imageStream;
}
/**
* 获取当前活动节点
* @param task
* @return
*/
public ActivityImpl getActivityImpl(Task task){
ProcessDefinition processDefinition =repositoryService .createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
ProcessDefinitionImpl pdImpl = (ProcessDefinitionImpl) processDefinition;
String processDefinitionId = pdImpl.getId();// 流程定义ID
RepositoryServiceImpl repositoryServiceImpl = (RepositoryServiceImpl) repositoryService ;
ProcessDefinitionEntity def = (ProcessDefinitionEntity) repositoryServiceImpl.getDeployedProcessDefinition(processDefinitionId);
List<ActivityImpl> activitiList = def.getActivities();//获取当前活动节点
ActivityImpl actImpl = null;
ExecutionEntity execution =null ;
if(task.getExecutionId()!=null){
execution = (ExecutionEntity) runtimeService .createExecutionQuery().executionId(task.getExecutionId()).singleResult();//获取唯一记录
}
// endevent1
if(execution==null){
for (ActivityImpl activityImpl : activitiList) {
if(activityImpl.getId().equals("endevent1")){
actImpl = activityImpl;
break;
}
}
}else{
String activitiId = execution.getActivityId();//获取活动节点的ID
for (ActivityImpl activityImpl : activitiList) {
String id = activityImpl.getId();
if (id.equals(activitiId)) {//循环遍历流程定义图,如果活动节点的id==遍历节点的id,此节点就是活动节点,获取的相关的坐标等信息。
actImpl = activityImpl;
break;
}
}
}
return actImpl;
}
/**
* 获取结束节点
* @param task
*
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这个是Activiti开发的请假流程实例,可以作为用Activiti开发工作流的参考;项目采用spring+hibernate+strus2+activity开发,可以运行;数据库采用oracle,其中 QingJia 和 QingJiaHis 是自己的业务表,分别表示 请假实体表和请假审批历史记录表,需要自己建。此项目还包含了拦截器的技术(未登录用户不给访问系统),实测可以启动流程,审批流程及查看流程图,还有历史审批查看等功能。
资源推荐
资源详情
资源评论
收起资源包目录
activiti 工作流实例-实现请假流程 (210个子文件)
basedao 28KB
basedao 28KB
testgroup.bpmn 6KB
testgroup.bpmn 6KB
helloworld.bpmn2d 642B
WorkFlowService.class 13KB
WorkFlowGroupAction.class 7KB
TsChartsInfoDAO.class 6KB
QingJiaDAO.class 3KB
GetProcessPicAction.class 3KB
TsChartsInfo.class 2KB
QingJiaHisDAO.class 2KB
QingJia.class 2KB
MyBaseAction.class 2KB
QingJiaHis.class 2KB
LoginInterceptor.class 1KB
CompareInterceptor.class 1KB
LoginAction.class 1KB
BeforeAdvice.class 905B
AfterAdvice.class 885B
Test.class 847B
StudentDao.class 835B
IStudent.class 151B
.classpath 11KB
org.eclipse.wst.common.component 447B
org.eclipse.wst.jsdt.ui.superType.container 49B
error_page_404.html 297B
groovy-all-2.1.3.jar 6.05MB
vaadin-6.8.8.jar 4.82MB
gwt-servlet-2.3.0.jar 4.77MB
hibernate3.jar 2.31MB
fop-0.94.jar 1.99MB
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar 1.57MB
ojdbc14.jar 1.47MB
h2-1.3.170.jar 1.4MB
activiti-engine-5.13.jar 1.34MB
xwork-core-2.2.1.jar 997KB
freemarker-2.3.16.jar 860KB
spring-context-3.1.2.RELEASE.jar 813KB
jackson-mapper-asl-1.9.9.jar 762KB
struts2-core-2.2.1.jar 755KB
activiti-explorer-5.13.jar 727KB
mybatis-3.2.2.jar 683KB
org.restlet-2.0.15.jar 657KB
org.springframework.context-3.0.5.RELEASE.jar 653KB
jgraphx-1.10.4.2.jar 609KB
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar 603KB
dcharts-widget-0.10.0.jar 597KB
batik-svg-dom-1.7.jar 587KB
javassist-3.9.0.GA.jar 583KB
spring-beans-3.1.2.RELEASE.jar 578KB
joda-time-2.1.jar 557KB
commons-collections-3.1.jar 546KB
batik-bridge-1.7.jar 546KB
org.springframework.beans-3.0.5.RELEASE.jar 542KB
spring-web-3.1.2.RELEASE.jar 536KB
batik-js-1.7.jar 493KB
log4j-1.2.17.jar 478KB
spring-core-3.1.2.RELEASE.jar 439KB
mail-1.4.1.jar 437KB
antlr-2.7.6.jar 433KB
org.springframework.web.servlet-3.0.5.RELEASE.jar 409KB
spring-jdbc-3.1.2.RELEASE.jar 395KB
batik-awt-util-1.7.jar 392KB
com.springsource.org.apache.log4j-1.2.15.jar 387KB
org.springframework.web-3.0.5.RELEASE.jar 386KB
org.springframework.jdbc-3.0.5.RELEASE.jar 377KB
org.springframework.core-3.0.5.RELEASE.jar 373KB
spring-orm-3.1.2.RELEASE.jar 371KB
javaGeom-0.11.0.jar 347KB
xmlgraphics-commons-1.2.jar 335KB
org.springframework.orm-3.0.5.RELEASE.jar 326KB
spring-aop-3.1.2.RELEASE.jar 325KB
com.springsource.net.sf.cglib-2.2.0.jar 319KB
org.springframework.aop-3.0.5.RELEASE.jar 314KB
dom4j-1.6.1.jar 307KB
batik-css-1.7.jar 304KB
com.springsource.org.apache.commons.httpclient-3.1.0.jar 301KB
hibernate-annotations.jar 273KB
cglib-2.2.jar 272KB
com.springsource.org.codehaus.jackson.mapper-1.0.0.jar 264KB
com.springsource.org.apache.commons.lang-2.4.0.jar 258KB
commons-lang-2.4.jar 256KB
junit-4.11.jar 239KB
spring-tx-3.1.2.RELEASE.jar 239KB
batik-gvt-1.7.jar 237KB
jackson-core-asl-1.9.9.jar 227KB
org.springframework.transaction-3.0.5.RELEASE.jar 226KB
ognl-3.0.jar 224KB
batik-svggen-1.7.jar 210KB
ehcache-1.2.3.jar 203KB
xml-apis-1.3.04.jar 190KB
spring-expression-3.1.2.RELEASE.jar 172KB
org.springframework.web.portlet-3.0.5.RELEASE.jar 171KB
batik-dom-1.7.jar 169KB
org.springframework.expression-3.0.5.RELEASE.jar 166KB
batik-codec-1.7.jar 162KB
commons-dbcp-1.4.jar 157KB
commons-io-2.0.1.jar 156KB
activiti-bpmn-converter-5.13.jar 150KB
共 210 条
- 1
- 2
- 3
sr1022
- 粉丝: 3
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页