Description: A preprocess event handler which sets the user's middle name using the first letter of the user's first name if the user does not have a value for middle name. The event handler triggers on the creation of an OIM User.
Reference: https://docs.oracle.com/cd/E40329_01/dev.1112/e27150/oper.htm#OMDEV4768
Source Code
package com.blogspot.oraclestack.eventhandlers; import java.io.Serializable; import java.util.HashMap; import oracle.core.ojdl.logging.ODLLevel; import oracle.core.ojdl.logging.ODLLogger; import oracle.iam.identity.usermgmt.api.UserManagerConstants; import oracle.iam.platform.context.ContextAware; import oracle.iam.platform.kernel.spi.PreProcessHandler; import oracle.iam.platform.kernel.vo.AbstractGenericOrchestration; import oracle.iam.platform.kernel.vo.BulkEventResult; import oracle.iam.platform.kernel.vo.BulkOrchestration; import oracle.iam.platform.kernel.vo.EventResult; import oracle.iam.platform.kernel.vo.Orchestration; /** * A preprocess event handler which sets the user's middle name using the first * letter of the user's first name if the user does not have a value for middle name. * Triggers on the creation of an OIM User * @author rayedchan * @version 1.0 */ public class SetMiddleNamePreprocessEH implements PreProcessHandler { private ODLLogger logger = ODLLogger.getODLLogger(SetMiddleNamePreprocessEH.class.getName()); /** * Execution logic for preprocess event handler to set middle name. * @param l Process Id * @param l1 Event Id * @param orchestration Contains useful user data * @return */ public EventResult execute(long l, long l1, Orchestration orchestration) { logger.log(ODLLevel.NOTIFICATION, "V1.0 Enter execute() with parameters: [{0}], [{1}], [{2}]", new Object[]{l, l1, orchestration}); // Get changed parameter values (E.g. User attributes) from orchestation HashMap<String, Serializable> parameters = orchestration.getParameters(); logger.log(ODLLevel.NOTIFICATION, "Orchestration paramters: [{0}]", new Object[]{parameters}); // Get USR_KEY of target user String usrKey = orchestration.getTarget().getEntityId(); logger.log(ODLLevel.NOTIFICATION, "Target User Key: {0}", new Object[]{usrKey}); // Get "Middle Name" String middleName = getParamaterValue(parameters, UserManagerConstants.AttributeName.MIDDLENAME.getId()); // If the middle name is empty set the first letter of the first name as the middle initial if ((middleName == null) || middleName.equals("")) { String firstName = getParamaterValue(parameters, UserManagerConstants.AttributeName.FIRSTNAME.getId()); // Get "First Name" middleName = firstName.substring(0, 1); // Set middleName to first letter of first name orchestration.addParameter(UserManagerConstants.AttributeName.MIDDLENAME.getId(), middleName); // Pass data to orchestration so OIM can apply the changes } logger.log(ODLLevel.NOTIFICATION, "Middle Name: {0}", new Object[]{middleName}); return new EventResult(); } public BulkEventResult execute(long l, long l1, BulkOrchestration bulkOrchestration) { return null; } public void compensate(long l, long l1, AbstractGenericOrchestration abstractGenericOrchestration) { } public boolean cancel(long l, long l1, AbstractGenericOrchestration abstractGenericOrchestration) { return false; } public void initialize(HashMap<String, String> hashMap) { } /** * Get an attribute value based on the attribute name. * @param parameters User's attributes * @param key Name of the attribute API name * @return Value of the attribute to fetch */ private String getParamaterValue(HashMap<String, Serializable> parameters, String key) { if(parameters.containsKey(key)) { String value = (parameters.get(key) instanceof ContextAware) ? (String) ((ContextAware) parameters.get(key)).getObjectValue() : (String) parameters.get(key); return value; } else { return null; } } }
Plugin XML
<?xml version="1.0" encoding="UTF-8"?> <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <plugins pluginpoint="oracle.iam.platform.kernel.spi.EventHandler"> <plugin pluginclass="com.blogspot.oraclestack.eventhandlers.SetMiddleNamePreprocessEH" version="1.0" name="SetMiddleNamePreprocessEH"/> </plugins> </oimplugins>
Event Handler Metadata
<?xml version="1.0" encoding="UTF-8"?> <eventhandlers xmlns="http://www.oracle.com/schema/oim/platform/kernel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/platform/kernel orchestration-handlers.xsd"> <action-handler entity-type="User" operation="CREATE" class="com.blogspot.oraclestack.eventhandlers.SetMiddleNamePreprocessEH" name="SetMiddleNamePreprocessEH" stage="preprocess" order="1050" sync="TRUE"/> </eventhandlers>
Logging
<log_handler name='SetMiddleNamePreprocessEH' level='TRACE:32' class='oracle.core.ojdl.logging.ODLHandlerFactory'> <property name='path' value='${domain.home}/servers/${weblogic.Name}/logs/SetMiddleNamePreProcessEH.log'/> <property name='useThreadName' value='true'/> <property name='maxFileSize' value='5242880'/> <property name='maxLogSize' value='52428800'/> <property name='encoding' value='UTF-8'/> </log_handler>
<logger name="com.blogspot.oraclestack.eventhandlers.SetMiddleNamePreprocessEH" level="TRACE:32" useParentHandlers="false"> <handler name="SetMiddleNamePreprocessEH"/> </logger>Plugin Zip Structure
mycustomplugin.zip | |-------- lib/ | | ---------- JAR FILE | |--------- plugin.xml | |--------- META-INF/ | ------ METADATA XML
Nice information. Print Custom Event Tickets From PrintMagic and are suitable for all events with the needs of guest identification. It helps in easy identification and control gathering at events that have control access points.
ReplyDelete