任务参与者

snaker的任务支持静态配置、动态传递、自定义类处理、动态设置、组等方式。

  • 参与者设置
  • 动态添加、删除参与者
  • 组支持

参与者设置

直接设置静态参与者,即assignee值为用户、部门或角色的标识符

通过运行时动态传递,即assignee值为变量名称,在调用流程引擎的api时,通过map参数传递这个变量值

通过自定义类[继承Assignment类],设置assignmentHandler属性,assign方法返回值就是参与者

动态添加、删除参与者

向指定任务动态添加参与者,同时支持设置参与类型

performType为0,则仅仅向wf_task_actor表中增加一条参与者信息performType为1,则会在wf_task表中增加一条任务数据。

engine.task().addTaskActor(String taskId, String... actors)
engine.task().addTaskActor(String taskId, Integer performType, String... actors)

对指定任务动态删除其中的参与者

engine.task().removeTaskActor(String taskId, String... actors)

组支持

由于snaker引擎与用户权限完全解耦的,所以对于组的支持,仅仅是你设置组作为参与者,你就要自定义一个任务的访问策略,能够根据操作人得到所有的组集合,这样流程引擎才能允许该操作人处理任务。

  • 自定义任务访问策略类
public class CustomAccessStrategy extends GeneralAccessStrategy {
    protected List<String> ensureGroup(String operator) {
        //此处根据实际项目获取操作人对应的组列表
        return ShiroUtils.getGroups();
    }
}
  • 配置

在snaker.xml中增加下面的配置

<bean class="com.snakerflow.framework.flow.CustomAccessStrategy"/>

results matching ""

    No results matching ""