June 19, 2012

Can Expression Language have arguments

No. Expression Language cannot have arguments. But there is an exception to this rule which is for the managed beans that are created as instances of HashMap and for resource bundles.

For example, if we have a managed bean instance "pairs" for HashMap, then we can use the below syntax to get its values.

#{pairs['key']};

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