OIM 11g R2 中的自定义插件和自定义事件处理程序有什么区别?
预先感谢一吨...
桑吉塔
插件是可以在 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 开发人员指南中的这些章节:第 17 章了解插件开发的基础知识,第 18 章了解开发自定义事件处理程序,第 16 章了解开发自定义计划任务,附录 B了解开发自定义用户名和常用名称生成/验证策略。
此外,如果您需要一些示例并可以访问 My Oracle Support,请查看以下文档: