2015-06-15 22 views

回答

2

插件是一代码模块可在OIM服务器内运行。它包含与元数据(plugin.xml)一起执行的Java类,用于标识它们。插件有很多种类型 - 类型取决于插件实现/扩展的Java接口或抽象类。

OIM的核心组件之一是编排引擎。它处理核心身份对象(例如用户,角色等)上的创建/更新/删除事务。每个编排流程都涉及一系列事件处理程序的执行,每个事件处理程序都是一个实现oracle.iam.platform.kernel.spi.EventHandler的插件。许多是开箱即用的,你也可以编写自定义的。例如,您可以安装一个事件处理程序,以在创建任何用户之后(后处理)运行。

但是,也有其他类型的插件 - 例如,登录名称生成插件(oracle.iam.identity.usermgmt.api.UserNamePolicy)。其中一些插件实际上是由开箱即用的事件处理程序调用的。事件处理程序是一个非常通用的API(它们在概念上与数据库触发器类似) - 它们具有很强大的功能,但如果不小心使用该功能,则可能会破坏OIM环境的稳定性。相比之下,其他插件接口仅执行一项特定任务(例如为新用户生成登录名),因此使用它们的风险要小得多。如果您可以使用某种更具体的插件来解决您的问题,那么优先使用事件处理程序。

您还会发现,虽然其中一些更具体的插件接口是由开箱即用的事件处理程序调用的,但其他接口不是由编排引擎调用,而是由OIM中的其他组件调用。例如,计划任务不由编排引擎运行,而由嵌入式Quartz调度程序运行。自定义计划任务扩展了oracle.iam.scheduler.vo.TaskSupport抽象类。

尽管每个插件都需要插件框架元数据(plugin.xml),但某些特定类型的插件需要特定于该类型的附加元数据。例如,事件处理程序需要上传到MDS的EventHandlers.xml;同样,计划任务需要在task.xml文件中定义。

OIM 9.x也有一个“事件处理程序”的概念,但这项技术与OIM 11g中的技术不同。 OIM 9.x事件处理程序扩展类com.thortech.xl.client.events.tcBaseEvent。通常,11g中不再支持9.x事件处理程序。

欲了解更多信息,请阅读OIM 11.1.2.3开发者指南中这些章节:chapter 17用于开发自定义事件处理程序插件开发,chapter 18的基础知识,并chapter 16用于开发自定义计划任务,并appendix B用于开发自定义的用户名和通用名称生成/验证策略。

另外,如果你想要一些样本,并有机会获得到My Oracle Support,看看这些文件:

  • OIM11g:示例代码为自定义用户名发电政策插件使用JDeveloper(文件编号1228035。1)
  • OIM11g:示例代码实现对前处理阶段在创建用户管理操作(文档ID 1262803.1)的自定义事件处理程序
  • 如何创建一个请求验证器来验证在OIM第11G(文档ID 1317087.1理由属性)
  • 如何确定修改编排中的OIM用户属性更改(文档ID 1535503.1)
相关问题