OIM 11g R2 中的自定义插件和自定义事件处理程序有什么区别?
提前非常感谢...
桑吉塔
最佳答案
插件是可以在 OIM 服务器内运行的代码模块。它包含与标识它们的元数据 (plugin.xml
) 一起执行的 Java 类。插件有很多种类型 - 类型由插件实现/扩展的 Java 接口(interface)或抽象类决定。
OIM的核心组件之一是编排引擎。它处理核心身份对象(例如用户、角色等)上的创建/更新/删除事务。每个编排过程都涉及一系列事件处理程序的执行,每个事件处理程序都是一个实现oracle.iam.platform.kernel.spi.EventHandler
的插件。许多都是开箱即用的,您也可以编写自定义的。例如,您可以安装一个事件处理程序,以便在创建任何用户后(后处理)运行。
但是,还有其他类型的插件 - 例如,登录名生成插件 (oracle.iam.identity.usermgmt.api.UserNamePolicy
)。其中一些插件实际上是由开箱即用的事件处理程序调用的。事件处理程序是一个非常通用的 API(它们在概念上与数据库触发器类似) - 它们具有很大的功能,但如果您不小心使用该功能,您可能会破坏 OIM 环境的稳定性。相比之下,其他插件接口(interface)仅执行一项特定任务(例如为新用户生成登录名),因此使用它们的风险要小得多。如果您可以使用某种更具体类型的插件来解决您的问题,请优先使用事件处理程序。
您还会发现,虽然其中一些更具体的插件接口(interface)是由开箱即用的事件处理程序调用的,但其他接口(interface)根本不是由编排引擎调用的,而是由 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)
关于oim - OIM 11g R2 中的自定义插件和自定义事件处理程序有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846729/