camunda过滤器

过滤器仅camunda系列有

  • 过滤器的继承
  • 过滤器查询对象使用
  • 过滤器删除

一、过滤器各种场景下的使用

创建Filter:

 

/**

     * insert into ACT_RU_FILTER (ID_, RESOURCE_TYPE_, NAME_, OWNER_, QUERY_, PROPERTIES_, REV_) values ( ?, ?, ?, ?, ?, ?, 1 )

     * 1201(String), Task(String), peng个人偏好(String), peng(String), java.io.StringReader@5df417a7(StringReader), java.io.StringReader@7c041b41(StringReader)

     */

    @Test

    public void saveFilter() {

        TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee("peng");

 

        Map<String, Object> map = new HashMap<>();

        map.put("peng-1", "peng1");

        map.put("peng-2", "peng2");

        map.put("peng-3", "peng3");

 

        Filter filter1 = filterService.newTaskFilter()

                .setName("peng个人偏好")

                .setOwner("peng")

                .setQuery(taskQuery)

                .setProperties(map);

 

        filterService.saveFilter(filter1);

        System.out.println(filter1.getId() + "," + filter1.getQuery() + "," + filter1.getProperties() + "," + filter1.getResourceType() + ","

                + filter1.getOwner() + "," + filter1.getName());

    }

 

创建时注意事项filter.setName(null)、filter.setName("")、filter.setQuery((Query<?,?>)null)会报错

查询Filter:
    /**

     * select * from ACT_RU_FILTER where ID_ = ?

     */

    @Test

    public void getFilter() {

        String filterId = "1201";

        Filter filter = filterService.getFilter(filterId);

        System.out.println("########" + filter);

    }

 

Filter继承:

   

 /**

     * insert into ACT_RU_FILTER (ID_, RESOURCE_TYPE_, NAME_, OWNER_, QUERY_, PROPERTIES_, REV_) values ( ?, ?, ?, ?, ?, ?, 1 )

     * 1301(String), Task(String), peng个人偏好(String), peng(String), java.io.StringReader@664a9613(StringReader), java.io.StringReader@5118388b(StringReader)

     */

    @Test

    public void extend() {

        String filterId = "1201";

        Filter filter1 = filterService.getFilter(filterId);

 

        TaskQuery taskQuery = taskService.createTaskQuery().taskName("name-1").taskCandidateUser("peng");

        Filter newFilter = filter1.extend(taskQuery);

        filterService.saveFilter(newFilter);

    }

 

Filter删除:

   

 /**

     * delete from ACT_RU_FILTER where ID_ = ? and REV_ = ? 

     */

    @Test

    public void deleteFilter() {

        String filterId = "1201";

        filterService.deleteFilter(filterId);

    }

 

Filter查询query使用,需要配合自定义命令类执行

   

 /**

     * select distinct RES.REV_, RES.ID_, RES.NAME_, RES.PARENT_TASK_ID_, RES.DESCRIPTION_, RES.PRIORITY_, RES.CREATE_TIME_, RES.OWNER_, RES.ASSIGNEE_, RES.DELEGATION_, RES.EXECUTION_ID_, RES.PROC_INST_ID_, RES.PROC_DEF_ID_, RES.CASE_EXECUTION_ID_, RES.CASE_INST_ID_, RES.CASE_DEF_ID_, RES.TASK_DEF_KEY_, RES.DUE_DATE_, RES.FOLLOW_UP_DATE_, RES.SUSPENSION_STATE_, RES.TENANT_ID_

     * from ACT_RU_TASK RES WHERE ( 1 = 1 and RES.ASSIGNEE_ = ? ) order by RES.ID_ asc LIMIT ? OFFSET ?

     */

    @Test

    public void getQuery() {

        String filterId = "1401";

        Filter filter1 = filterService.getFilter(filterId);

 

        //执行自定义命令类

        ServiceImpl service = (ServiceImpl) filterService;

        service.getCommandExecutor().execute(new CustomerCmd(filter1));

    }

注意:filterService.newTaskFilter(),方法里面传递的resourceType的类型是Task,说明开源版本的过滤器只支持任务的过滤查询。商业版应该是支持其他类型的query`的

 

posted @ 2021-08-18 10:35  jason47  阅读(243)  评论(0编辑  收藏  举报