Activiti6.0的一些小功能

本文详细介绍了使用Activiti流程引擎的几种查询方式,包括自定义命令查询流程定义、实体类查询表内容,以及用户身份的增删操作。同时,列举了常见的Activiti异常及其含义,帮助开发者更好地理解和应用Activiti。
  • 1、通过自建的命令查询流程定义
 /**
     * 通过自建的命令查询流程定义
     */
    @Test
    @Deployment(resources = {"my-process_job.bpmn20.xml"})
    public void testCommand() {

        activitiRule.getRuntimeService().startProcessInstanceByKey("my-process");
        ManagementService managementService = activitiRule.getManagementService();

        //可以自己构建command命令
        ProcessDefinitionEntity processDefinitionEntity = managementService.executeCommand(new Command<ProcessDefinitionEntity>() {
            @Override
            public ProcessDefinitionEntity execute(CommandContext commandContext) {

                ProcessDefinitionEntity processDefinitionEntity = commandContext.getProcessDefinitionEntityManager()
                        .findLatestProcessDefinitionByKey("my-process");
                return processDefinitionEntity;
            }
        });

        LOGGER.info("获取自定义命令的流程实体: {}", processDefinitionEntity);
    }
  • 2、通过实体类查询表内容
 /**
     * 通过实体类查询表内容
     */
    @Test
    @Deployment(resources = {"my-process_job.bpmn20.xml"})
    public void testTablePageQuery() {

        ManagementService managementService = activitiRule.getManagementService();
        TablePage tablePage = managementService.createTablePageQuery()
                .tableName(managementService.getTableName(ProcessDefinitionEntity.class))
                .listPage(0, 100);

        List<Map<String, Object>> rows = tablePage.getRows();
        rows.forEach(row -> {
            LOGGER.info("查询到的表的内容 : {}", row);
        });
    }
  • 3.用户身份增加删除(deleteUser与saveUser同理)的写法:
 @Test
    public void testIdentity() {

        //获取服务
        IdentityService identityService = activitiRule.getIdentityService();

        //创建用户
        User user1 = identityService.newUser("user1");
        User user2 = identityService.newUser("user2");
        user1.setEmail("357396211@qq.com");
        user2.setEmail("357396222@qq.com");
        identityService.saveUser(user1);
        identityService.saveUser(user2);

        //创建组
        Group group1 = identityService.newGroup("group1");
        Group group2 = identityService.newGroup("group2");
        identityService.saveGroup(group1);
        identityService.saveGroup(group2);

        identityService.createMembership("user1", "group1");
        identityService.createMembership("user1", "group2");
        identityService.createMembership("user2", "group1");

        //根据已知的userId进行查询
        User user11 = identityService.createUserQuery().userId("user1").singleResult();
        LOGGER.info("id为user1的用户 {}", ToStringBuilder.reflectionToString(user11, ToStringStyle.JSON_STYLE));
        user11.setLastName("shr");

        //根据组id查询用户
        List<User> userList = identityService.createUserQuery().memberOfGroup("group1").listPage(0, 100);
        userList.forEach(user -> {
            LOGGER.info("属于group1的用户 {}", ToStringBuilder.reflectionToString(user, ToStringStyle.JSON_STYLE));
        });

        //根据用户查所在组别
        List<Group> groupList = identityService.createGroupQuery().groupMember("user1").listPage(0, 100);
        groupList.forEach(group -> {
            LOGGER.info("user1所在的组 {}", ToStringBuilder.reflectionToString(group, ToStringStyle.JSON_STYLE));
        });
    }

常见的异常

异常信息描述
ActivitiWrongDbException引擎与数据库的版本不匹配
ActivitiOptimisticLockingException并发导致乐观锁异常
ActivitiClassLoadingException加载类异常
ActivitiObjectNotFoundException操作对象不存在
ActivitiIllegalArgumentException非法的参数
ActivitiTaskAlreadyClaimedException任务被重新声明代理人
BpmnError定义业务异常,控制流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值