Hi Serega,

I'm actually working on a tutorial blog post for the Cloudera website on
how to make an EL function.  It's not quite done yet, but here's the basic
steps you need to do:

1) Write the function in a new Java class.  There's no interface or class
to inherit from, you just make a new class in whatever package you want
(e.g. my.package.AwesomeELFunctions).  For what you want, its signature
would be:
        public static int functionName(String stringWithDatetime, String
pattern)
If you want to create more than one function, they can all go in the same
class as well.

2) Compile your class.  You only need Oozie dependencies if you're function
requires something from Oozie.  You can use javac, maven, Eclipse, etc to
compile it.  Make sure to create a jar.

3) (Shut down Oozie and) copy the jar file to
/where/you/deployed/oozie/libext/ and re-run bin/oozie-setup.sh prepare-war

4) In oozie-site.xml, set (or add if it doesn't exist) a property like this:
<property>
     <name>oozie.service.ELService.ext.functions.workflow</name>
     <value>
          functionName=my.package.AwesomeELFunctions#functionName
     </value>
</property>
If you have more functions, that property takes a comma separated list of
them.  The value on the left side of the equals is the name that you'd use
in a workflow and the value on the right side is the name of your function
in your Java code.  For the value on the left side, you can optionally put
a prefix (you may have seen many built-in functions that start with "wf:"
for example).

5) Start up Oozie.  You should now be able to use the functionName custom
EL Function you created!

I believe this may only make the function available in workflows, but I'm
not sure; if not, there should be a similar property in oozie-site you can
set for coordinators if you need that.

Once my proper tutorial blog post is posted, I'll add a link to this
thread, but it may be a while.

- Robert




On Fri, Jul 12, 2013 at 7:26 AM, Serega Sheypak <[email protected]>wrote:

> Hi, I need to create custom EL function.
> It accepts:
> String StringWithDatetime
> String Pattern (to parse Date)
> It returns:
> time in seconds.
>
> Please tell me:
> 1. Where can I find example?
> 2. Where do I have to put implementation of this function?
>

Reply via email to