OIM user interface customizations are easier now, and they 'survive' patch applications (there is no need to reapply them after patching). Adding new artifacts, new skins, and 'plugging' code directly into the user interface components became an easier task.
This post introduces some of the customization related concepts provided by the new OIM user interface.
ADF and WebCenterThe underlying technologies, Oracle ADF and Oracle WebCenter, provide a powerful customization framework for the brand new OIM user interface.
The OIM application now exposes user interface components through itself. It provides access to UI components details, so that one can modify them, and make the modifications available to other users. New UI components can easily be created and made available. Existing components can be easily hidden.
The picture below shows one UI component in 'edition mode':
SandboxA sandbox holds and isolates a set of UI customizations. The first customization step is to create a new sandbox and activate it. Then all customization work will be done in the context of the sandbox. Once the customization is tested and ready, the sandbox is published, and the customizations are made available to all users. A sandbox does not represent a UI component, or anything like that, it is a 'virtual entity' to hold customizations.
Sandboxes are not only used to customize the UI components, they are also used to create new forms (like an application instance Form) and edit the existing ones (like editing the User form to add UDFs). Sandboxes can be exported/imported in order to move customizations from one environment to another.
Behind the scenes, a sandobx is stored in the MDS database. Every time a user logs in into OIM, the UI verifies which customizations are available and apply them to the final rendered user interface.
ExpressionsOracle ADF and Oracle WebCenter Composer bring the concept of 'expressions language' in OIM to a whole new level. Expressions can be used in different ways in the UI. They can be used to generate labels, invoke ADF managed beans, hide/show UI components, generate data, generate image links, and a lot of other cool and nice things.
Managed BeansManaged beans are a piece of code that can be invoked from the OIM UI. Invoking a managed bean is done through the use of Expression Language.
OIM provides a pre-defined set of managed beans that can be invoked from ELs. These managed beans can be used to get useful information like the logged user details and request details. There is a list of pre-defined expressions that can be used to invoked these beans, such list is available here.
OIM also provides a WebLogic shared library that can be used to deploy custom managed beans. Such library is reference by OIM UI applications. The library can be located in the 'Deployments' page of the WebLogic management console. The library name is 'oracle.iam.ui.custom', and it points to the $OIM_ORACLE_HOME/sever/apps/oracle.iam.ui.custom-dev-starter-pack.war file. Deploying a managed bean is basically to add the managed bean jar file to this library; and update the library deployment in WebLogic.
But a managed bean is not a simple java code in a simple jar file, it has to follow the ADF development and deployment model. Therefore, JDeveloper is the required tool to code them. A new 'Fusion Web Application' is the start point for developing a managed bean:
There are different ways a custom jar file can be added to the oracle.iam.ui.custom-dev-starter-pack.war library. The 'jar' command line is the first one to come to mind. But using a 'ZIP' tool (like 7-Zip, WinRAR or WinZIP) is easier because there is no need to worry about the 'META-INF' folder content (the contents in META-INF cannot be modified). While 'jar' needs parameter to not touch the 'META-INF' folder, a ZIP tool will not touch anything.
The OIM developer's guide has a lot of good information that go deeper in the concepts explained in this post. The documentation is available here.