委托:一般是指办理人指定A为其在指定时间内代理审批公文。有新建委托记录,撤销委托记录操作。
具体实现:
一.创建数据库表
1.创建委托数据表
CREATE TABLE WF_DELEGATE_INFO(
ID BIGINT auto_increment,
ASSIGNEE VARCHAR(200),
ATTORNEY VARCHAR(200),
START_TIME TIMESTAMP,
END_TIME TIMESTAMP,
PROCESS_DEFINITION_ID VARCHAR(100),
STATUS INTEGER
)
2.委托办理流水记录表
CREATE TABLE WF_DELEGATE_HISTORY(
ID BIGINT auto_increment,
ASSIGNEE VARCHAR(200),
ATTORNEY VARCHAR(200),
DELEGATE_TIME TIMESTAMP,
TASK_ID VARCHAR(100),
STATUS INTEGER
)
二.JAVA代码
1.创建实体
DelegateInfo
DelegateHistory
2.创建DelegateService
public class DelegateService {
private static Logger logger = LoggerFactory
.getLogger(DelegateService.class);
public static final String SQL_GET_DELEGATE_INFO = "select * from bpm_delegate_info"
+ " where status=1 and assignee=? order by id desc";
public static final String SQL_SET_DELEGATE_INFO = "insert into bpm_delegate_history"
+ "(assignee,attorney,delegate_time,task_id,status) values(?,?,now(),?,1)";
private JdbcTemplate jdbcTemplate;
public DelegateInfo getDelegateInfo(String targetAssignee,
String targetProcessDefinitionId) {
List<Map<String, Object>> list = jdbcTemplate.queryForList(
SQL_GET_DELEGATE_INFO, targetAssignee);
for (Map<String, Object> map : list) {
logger.info("map : {}", map);
Long id = (Long) map.get("id");
String assignee = (String) map.get("assignee");
String attorney = (String) map.get("attorney");
String processDefinitionId = (String) map
.get("process_definition_id");
Date startTime = (Date) map.get("start_time");
Date endTime = (Date) map.get("end_time");
Integer status = (Integer) map.get("status");
if (timeNotBetweenNow(startTime, endTime)) {
logger.info("timeNotBetweenNow");
continue;
}
if ((processDefinitionId == null)
|| processDefinitionId.equals(targetProcessDefinitionId)) {
logger.info("delegate to {}", attorney);
// delegateTask.setAssignee(attorney);
// jdbcTemplate.update(SQL_SET_DELEGATE_INFO, assignee,
// attorney, delegateTask.getId());
DelegateInfo delegateInfo = new DelegateInfo();
delegateInfo.setId(id);
delegateInfo.setAssignee(assignee);
delegateInfo.setAttorney(attorney);
delegateInfo.setProcessDefinitionId(processDefinitionId);
delegateInfo.setStartTime(startTime);
delegateInfo.setEndTime(endTime);
delegateInfo.setStatus(status);
return delegateInfo;
}
}
return null;
}
public void saveRecord(String assignee, String attorney, String taskId) {
jdbcTemplate.update(SQL_SET_DELEGATE_INFO, assignee, attorney, taskId);
}
public void removeRecord(Long id) {
jdbcTemplate.update("delete from bpm_delegate_info where id=?", id);
}
public void addDelegateInfo(String assignee, String attorney,
Date startTime, Date endTime, String processDefinitionId) {
String sql = "insert into bpm_delegate_info(assignee,attorney,start_time,end_time,process_definition_id,status) values(?,?,?,?,?,?)";
jdbcTemplate.update(sql, assignee, attorney, startTime, endTime,
processDefinitionId, 1);
}
private boolean timeNotBetweenNow(Date startTime, Date endTime) {
Date now = new Date();
if (startTime != null) {
return now.before(startTime);
}
if (endTime != null) {
return now.after(endTime);
}
return false;
}
@Resource
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
3.创建activiti监听器DelegateTaskListener
public class DelegateTaskListener extends DefaultTaskListener {
private DelegateService delegateService;
@Override
public void onAssignment(DelegateTask delegateTask) throws Exception {
String assignee = delegateTask.getAssignee();
String processDefinitionId = delegateTask.getProcessDefinitionId();
DelegateInfo delegateInfo = delegateService.getDelegateInfo(assignee,
processDefinitionId);
if (delegateInfo == null) {
return;
}
String attorney = delegateInfo.getAttorney();
delegateTask.setAssignee(attorney);
delegateService.saveRecord(assignee, attorney, delegateTask.getId());
}
@Resource
public void setDelegateService(DelegateService delegateService) {
this.delegateService = delegateService;
}
}
分享到:
相关推荐
总结来说,Activiti工作流是一个功能强大且灵活的流程管理工具,通过深入学习和实践本操作手册,Java开发者能够熟练掌握其使用,从而提升业务流程的自动化水平和效率。工作流使用.doc文档将提供更详细的步骤和示例,...
Activiti工作流引擎的核心功能包括: 1. **流程定义与建模**:使用BPMN 2.0标准,支持复杂的流程建模,包括任务、事件、网关、泳道等元素。 2. **流程实例管理**:启动、暂停、继续、结束流程实例,以及查询和控制...
这个"疯狂activiti工作流讲义"很可能是针对学习和掌握Activiti工作流框架的一份详细教程,旨在帮助开发者深入理解并有效地利用这一工具进行开发。 1. **工作流基础**:工作流是描述业务流程的模型,它定义了任务...
本"Activiti工作流demo"旨在帮助开发者快速理解并应用Activiti,通过实践来学习其核心概念和功能。 1. **Activiti简介** Activiti是一款轻量级的业务流程管理(BPM)系统,它不仅支持复杂的业务流程,还具有高度...
Activiti工作流用户手册是一份全面介绍Activiti的文档,旨在帮助用户理解和使用这个强大的工作流引擎。Activiti是一款开源的业务流程管理(BPM)和工作流系统,由Alfresco公司发起,并且在Apache 2.0许可证下发布。...
Activiti工作流是一款开源的企业级工作流引擎,它基于模型驱动的架构,旨在简化业务流程自动化。Activiti 5.9 版本是其发展过程中的一个重要里程碑,提供了丰富的功能和改进,使得开发者能够更高效地设计、部署和...
Activiti工作流是一个开源的企业流程管理系统,用于设计、部署和执行业务流程。它基于Java技术栈,使用模型驱动的方法,让非程序员也能通过图形化工具设计复杂的流程。这个"activiti工作流jar"很可能是包含了...
将Spring与Activiti整合,可以充分利用Spring的强大功能来管理和驱动Activiti工作流,实现灵活、可扩展且易于维护的业务流程解决方案。 1. **Spring框架**:Spring是一个开源的Java平台,提供了全面的企业应用程序...
这个压缩包文件包含的“Activiti工作流+Activiti帮助文档”是关于如何使用和理解Activiti的重要参考资料,旨在帮助开发者和业务分析师更好地掌握其功能和应用场景。 1. Activiti简介: Activiti 是由 Alfresco ...
《Activiti 6.0 工作流配置详解——与MySQL 8.0集成实践》 Activiti是一款开源的工作流引擎,它为企业的业务流程管理...通过深入学习和实践,我们可以充分利用Activiti的强大功能,构建高效、灵活的企业级工作流系统。
【工作流Activiti5学习总结】 工作流管理系统(Workflow Management System, WfMS)是企业信息化建设中的重要组成部分,它负责协调和管理业务流程。Activiti5是一款开源的工作流引擎,由Alfresco公司开发,它基于...
综上所述,Activiti6.0工作流使用说明文档是一份非常全面的使用指南,它不仅介绍了Activiti工作流的基础使用方法,还提供了丰富的高级功能介绍和问题解决方案,是开发Activiti工作流应用时不可或缺的参考资料。
Activiti工作流是一款开源的工作流程管理系统,用于设计、执行和管理业务流程。它基于Java平台,采用模型驱动的架构,支持BPMN 2.0标准,提供了丰富的API和工具,便于开发人员集成到自己的应用中。以下是关于...
《基于Activiti5工作流实战企业协同OA办公系统教程》是一门深度解析如何利用Activiti5框架构建高效、协同的企业办公自动化(OA)系统的专业课程。该教程旨在帮助IT从业者和对企业信息化有兴趣的学习者掌握工作流引擎...
《Activiti7精讲&Java通用型工作流开发实战》是一个全面深入的视频教程,旨在帮助初学者和有经验的开发者掌握Activiti7框架,并利用Java技术构建高效、灵活的工作流系统。本教程覆盖了从基础到高级的全方位内容,...
3. **docs**:文档目录,通常包含了用户手册、API参考、示例代码和其他有助于理解Activiti工作流引擎的材料。在这里,你可以找到关于如何安装、配置和使用Activiti的详细指导。 在学习和研究Activiti时,你需要掌握...
Activiti工作流是一款开源的工作流程管理系统,主要用于设计、部署和执行业务流程。它基于Java平台,采用模型驱动的架构(MDA),使得流程定义可以以图形化的方式进行,极大地提升了流程设计的易用性。本资源集合是...
《疯狂Workflow讲义——基于Activiti的工作流应用开发》是一本深入探讨工作流技术与实践的书籍,专注于使用Activiti这一流行的开源工作流引擎进行应用开发。Activiti是基于Java的业务流程管理(BPM)系统,适用于...
Activiti 是一个开源的工作流和业务自动化引擎,广泛应用于企业级流程管理。在这个主题中,"activiti 会签投票统计" 涉及到 Activiti 的特定功能,特别是会签(Parallel Multi-instance)和自定义事件监听器,用于...
Activiti7是一款强大的开源工作流引擎,用于在Java应用程序中实现业务流程自动化。它基于模型驱动的架构,允许开发者通过BPMN 2.0标准来设计、部署和执行流程。这个“Activiti7(流程引擎)简单笔记”很可能是作者在...