Documentation

Trace:

(workflow)

Custom Function

Translations of this page:

This is an old revision of the document!


A function is the code block behind a task. It's very simple to create a new function because a function is defined as simple Java interface:

IFunction.java
public interface IFunction 
{
    /**
     * The current workflow step.
     * @return The current workflow step.
     */
    public IWorkflowStep getWorkflowStep();
 
    /**
     * Initializes the function.
     * 
     * @param pWorkflow the current workflow step
     */
    public void init(IWorkflowStep pWorkflow);
 
    /**
     * Runs the function.
     * If the function returns true, the function is fully done, and the workflow jumps to the next step.
     * In case there are more then one next steps, the finish function of IWorkflowStep has to be called.
     * An exception will be thrown otherwise.
     * If finish is already called, it does not matter whether true or false is returned.
     * 
     * @return true, if the function is done.
     * @throws Throwable if function fails.
     */
    public boolean run() throws Throwable;
 
    /**
     * Notifies, that the workflow is cancelled.
     * 
     * @throws Throwable if canceling fails.
     */
    public void cancel() throws Throwable;
 
}

The interface already has an abstract implementation and so it's really super simple to create a new function. Our example will send an email, so it't the EmailFunction:

EmailFunction.java
public class EmailFunction extends AbstractFunction 
{
    @Override
    public boolean run() throws Throwable 
    {
        XmlNode smtp = getApplicationZone().getConfig().getNode("/application/mail/smtp");
 
        if (smtp == null) 
        {
            throw new IllegalArgumentException("The SMTP server configuration was not found in the application zone (path /application/mail/smtp)!");
        }
 
        String host = smtp.getNodeValue("host");
        String port = smtp.getNodeValue("port");
        String username = smtp.getNodeValue("username");
        String password = smtp.getNodeValue("password");
        boolean tlsEnabled = Boolean.parseBoolean(smtp.getNodeValue("tlsenabled"));
 
        String defaultsender = smtp.getNodeValue("defaultsender");
 
        String from = getNotNullEvaluatedParameter("From");
        String to = getNotNullEvaluatedParameter("To");
        String cC = getEvaluatedParameter("CC");
        String bCC = getEvaluatedParameter("BCC");
        String subject = getNotNullEvaluatedParameter("Subject");
        String body = getEvaluatedParameter("Body");
 
        log("Mailserver: " + host + ":" + port + "/" + username);
 
        Mail mail = new Mail(host, port, username, password);
        mail.setTLSEnabled(tlsEnabled);
 
        mail.send(CommonUtil.nvl(from, defaultsender), to, cC, bCC, subject, body, null, null);
 
        log("From: " + CommonUtil.nvl(from, defaultsender));
        log("To: " + to);
        log("Subject: " + subject);
 
        return true;
    }
 
}
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information