June 7, 2012

Create Custom functions in OPA

Below is the procedure to create custom functions in OPA (Oracle Policy Automation).



  • Copy the determinations-engine.jar file to library path from OPA (the file exists under the path <project>\Release\web-determinations\WEB-INF\lib\)
  • Create a java class by extending the class “CustomFunction”. Note that a separate class is required to define for every custom function to be used in OPA
  • Overwrite the “evaluate” method which will handle the user request
public Object evaluate(EntityInstance entityInstance, Object[] objects)
  • The class would be like below
public class GetLocCountry extends CustomFunction {
    public GetLocCountry() {
        super();
    }
    public Object evaluate(EntityInstance entityInstance, Object[] objects) {
        return null;
    }
}
  • Make jar to the class file (or include all the classes created into a single jar file)
  • Copy the jar file to the below path of the OPA project
<OPA project>\Development\Extensions\lib\
  • Create extension.xml file under Extensions folder. See below sample extension.xml file
<extension>
    <functions>
        <function name="getLocation" return-type="text">
            <arg name="country_name" type="text"/>
            <handler platform="java”     class="cf.services.GetLocCountry"/>
        </function>
    </functions>
</extension>
  • Build and Run the OPA project