本文共 3361 字,大约阅读时间需要 11 分钟。
本节主要介绍了一个基于Activiti流程引擎的Java项目,其中包含了与用户身份相关的任务管理功能的实现。以下是代码的主要逻辑和实现细节:
AddIdentityLink
类初始化
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
IdentityService identityService = engine.getIdentityService();
TaskService taskService = engine.getTaskService();
用户组和用户创建
IdentityService
创建用户组:Group groupA = createGroup(identityService, "group1", "经理组", "manager");
IdentityService
创建用户:User user = creatUser(identityService, "user1", "张三", "last", "abc@163.com", "123");
任务创建与身份关联
Task task1 = taskService.newTask("task1"); task1.setName("申请任务"); taskService.saveTask(task1);
addGroupIdentityLink
方法:taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.CANDIDATE); taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.OWNER); taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.ASSIGNEE);
Task task2 = taskService.newTask("task2"); task2.setName("申请任务2"); taskService.saveTask(task2);
addUserIdentityLink
方法:taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.CANDIDATE); taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.OWNER); taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.ASSIGNEE);
creatUser
和 createGroup
creatUser
方法:通过IdentityService
创建并保存用户信息。
static User creatUser(IdentityService identityService, String id, String first, String last, String email, String passwd) { User user = identityService.newUser(id); user.setFirstName(first); user.setLastName(last); user.setEmail(email); user.setPassword(passwd); identityService.saveUser(user); return identityService.createUserQuery().userId(id).singleResult();}
createGroup
方法:通过IdentityService
创建并保存用户组信息。
static Group createGroup(IdentityService identityService, String id, String name, String type) { Group group = identityService.newGroup(id); group.setName(name); group.setType(type); identityService.saveGroup(group); return identityService.createGroupQuery().groupId(id).singleResult();}
本节对Activiti流程引擎相关数据库表的数据进行了分析,重点关注了任务相关的数据存储和关联关系。
act_hi_taskinst
表该表主要存储任务执行记录,字段包括:
ID_
:任务IDPROC_DEF_ID_
:流程定义IDTASK_DEF_KEY_
:任务定义键PROC_INST_ID_
:流程实例IDEXECUTION_ID_
:执行IDNAME_
:任务名称PARENT_TASK_ID_
:父任务IDDESCRIPTION_
:任务描述OWNER_
:任务所有者ASSIGNEE_
:任务代理人START_TIME_
:任务启动时间CLAIM_TIME_
:任务领取时间END_TIME_
:任务结束时间DURATION_
:任务时长DELETE_REASON_
:删除原因PRIORITY_
:任务优先级DUE_DATE_
:任务期限FORM_KEY_
:表单密钥CATEGORY_
:类别TENANT_ID_
:租户IDact_ru_task
表该表存储任务实例信息,字段包括:
ID_
:任务IDREV_
:版本号EXECUTION_ID_
:执行IDPROC_INST_ID_
:流程实例IDPROC_DEF_ID_
:流程定义IDNAME_
:任务名称PARENT_TASK_ID_
:父任务IDDESCRIPTION_
:任务描述TASK_DEF_KEY_
:任务定义键OWNER_
:任务所有者ASSIGNEE_
:任务代理人DELEGATION_
:委托类型PRIORITY_
:任务优先级CREATE_TIME_
:创建时间DUE_DATE_
:任务期限CATEGORY_
:类别SUSPENSION_STATE_
:挂起状态TENANT_ID_
:租户IDFORM_KEY_
:表单密钥CLAIM_TIME_
:任务领取时间act_id_user
表该表存储用户信息,字段包括:
ID_
:用户IDREV_
:版本号FIRST_
:用户名字LAST_
:用户姓氏EMAIL_
:用户邮箱PWD_
:用户密码PICTURE_ID_
:用户头像IDact_id_group
表该表存储用户组信息,字段包括:
ID_
:组IDREV_
:版本号NAME_
:组名称TYPE_
:组类型act_ru_identitylink
表该表存储任务与用户或用户组的关联关系,字段包括:
ID_
:关联IDREV_
:版本号GROUP_ID_
:用户组IDTYPE_
:关联类型USER_ID_
:用户IDTASK_ID_
:任务IDPROC_INST_ID_
:流程实例IDPROC_DEF_ID_
:流程定义ID以上为本项目中涉及的主要数据库表的分析,完整的数据库设计和数据结构可以根据实际需求进行扩展和优化。
转载地址:http://tcqj.baihongyu.com/