activiti 给流程定义(ProcessDefinition)指定用户具有启动流程的权限

本文介绍如何在Activiti中为特定用户分配权限,使得他们能够启动流程定义。通过理解Activiti的工作流管理和权限控制,可以有效管理用户对流程实例的启动操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        ProcessEngine engine = config.buildProcessEngine();
    	
    	IdentityService is = engine.getIdentityService();
    	org.flowable.idm.api.User user = is.newUser(UUID.randomUUID().toString());
    	user.setFirstName("kebi");
    	is.saveUser(user);
    	
    	
    	RepositoryService rs = engine.getRepositoryService();
    	 
    	Deployment deploy = rs.createDeployment().
    			addClasspathResource("process/helloworld.bpmp2.0.xml").deploy();
    	
    	ProcessDefinition def = rs.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();
		rs.addCandidateStarterUser(def.getId(), user.getId()); //指定流程被哪个用户操作+
    	
    	List<ProcessDefinition> list = rs.createProcessDefinitionQuery()
    			.startableByUser(user.getId()).list(); //查询这个用户可以操作的流程
    	for(ProcessDefinition de:list) {
    		System.out.println(de.getId());
    	}


        // 给任务设置用户组
    	TaskService taskService = engine.getTaskService();
    	Task task = taskService.createTaskQuery().singleResult();
    	String groupId=UUID.randomUUID().toString();
    	Group group = is.newGroup(groupId);
    	group.setName("测试用户组");
    	is.saveGroup(group);
    	
    	taskService.addCandidateGroup(task.getId(), groupId);


        //设置这个用户的持有人
    	taskService.setOwner(task.getId(), user.getId());    	
    	
    	//查询用户要处理的任务
    	List<Task> tasks = taskService.createTaskQuery().taskOwner(user.getId()).list();

    	for(Task t:tasks) {
    		System.out.println(task.getName());
            //完成当前任务
            taskService.complete(t.getId());
    	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DQchat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值