191 - 高级查询api和身份管理
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了191 - 高级查询api和身份管理相关的知识,希望对你有一定的参考价值。
1、高级查询API:运行时间与历史任务查询之间的无缝切换
任何BPM用户界面的核心组件是任务列表。通常,最终用户使用开放的运行时任务,通过各种设置过滤他们的收件箱。通常,历史任务也需要在这些列表中显示,并且具有相似的过滤功能。为了使代码更容易,TaskQuery和HistoricTaskInstanceQuery都有一个共享的父接口,它包含所有常见的操作(大部分操作是通用的)。
这个通用接口是org.flowable.engine.task.TaskInfoQuery类。既org.flowable.engine.task.Task和org.flowable.engine.task.HistoricTaskInstance 具有共同的超类org.flowable.engine.task.TaskInfo(具有共同属性的),这是从例如返回的列表()方法。但是,Java泛型有时比帮助更有害:如果要直接使用TaskInfoQuery类型,它看起来像这样:
TaskInfoQuery<? extends TaskInfoQuery<?,?>, ? extends TaskInfo> taskInfoQuery
呃,对。为了解决这个问题,一个org.flowable.engine.task.TaskInfoQueryWrapper类可以用来避免泛型(下面的代码可能来自REST代码,它返回一个任务列表,用户可以在打开和完成的任务之间切换):
TaskInfoQueryWrapper taskInfoQueryWrapper = null;
if (runtimeQuery)
taskInfoQueryWrapper = new TaskInfoQueryWrapper(taskService.createTaskQuery());
else
taskInfoQueryWrapper = new TaskInfoQueryWrapper(historyService.createHistoricTaskInstanceQuery());
List<? extends TaskInfo> taskInfos = taskInfoQueryWrapper.getTaskInfoQuery().or()
.taskNameLike("%k1%")
.taskDueAfter(new Date(now.getTime() + (3 * 24L * 60L * 60L * 1000L)))
.endOr()
.list();
2、通过覆盖标准的SessionFactory来定制身份管理
如果您不想使用像LDAP集成一样的完整ProcessEngineConfigurator实现 ,但仍希望插入自定义身份管理框架,那么您也可以重写IdmIdentityServiceImpl类或直接实现IdmIdentityService接口,并使用实现的类ProcessEngineConfiguration中的idmIdentityService属性。在Spring中,通过将以下内容添加到ProcessEngineConfiguration bean定义中可以轻松完成此操作:
<bean id="processEngineConfiguration" class="...SomeProcessEngineConfigurationClass">
...
<property name="idmIdentityService">
<bean class="com.mycompany.IdmIdentityServiceBean"/>
</property>
...
</bean>
看看LDAPIdentityServiceImpl类的实现,有一个很好的例子来说明如何实现IdmIdentityService接口的方法。你必须找出你想在自定义标识服务类中实现的方法。例如下面的调用:
long potentialOwners = identityService.createUserQuery().memberOfGroup("management").count();
导致对IdmIdentityService接口的以下成员的调用:
UserQuery createUserQuery();
LDAP集成的代码包含了如何实现这个的完整例子。
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于191 - 高级查询api和身份管理的主要内容,如果未能解决你的问题,请参考以下文章
在使用 spotify api 进行用户身份验证后管理 spotify 订阅(取消、升级)
API Gateway 中控制和管理对 REST API 的访问