OIM 11g R2中的自定义插件和自定义事件处理程序有什么区别?

时间:2015-06-15 13:41:44

标签: oim

OIM 11g R2中的自定义插件和自定义事件处理程序有什么区别?

提前感谢...

桑吉塔

1 个答案:

答案 0 :(得分:3)

插件是一个可以在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),但某些特定类型的插件需要特定于该类型的其他元数据。例如,事件处理程序需要EventHandlers.xml上传到MDS;同样,需要在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自定义用户名生成策略插件的示例代码(文档ID 1228035.1)
  • OIM11g:在创建用户管理操作期间为预处理阶段实施的自定义事件处理程序的示例代码(文档ID 1262803.1)
  • 如何创建请求验证程序以验证OIM 11g中的对齐属性(文档ID 1317087.1)
  • 如何在修改业务流程中确定OIM用户属性更改(文档ID 1535503.1)