WSO2 CEP, создание функции расширения

Я пытаюсь создать новую функцию расширения для cep, чтобы получить разницу во времени, я использую cep версии 3.1.

Я расширяю класс «FunctionExecutor» и переопределяю функцию «выполнить (данные объекта [])», но я не знаю, как связать запрос сиддхи в плане выполнения и созданную функцию.

Кстати, я не могу использовать аннотацию, потому что не могу найти класс "org.wso2.siddhi.query.api.extension.annotation.SiddhiExtension"


person Mohamed Khalil    schedule 18.03.2015    source источник


Ответы (2)


Попробуйте что-то вроде этого:

import org.wso2.siddhi.core.config.SiddhiContext;
import org.wso2.siddhi.core.executor.function.FunctionExecutor;
import org.wso2.siddhi.query.api.definition.Attribute;
import org.wso2.siddhi.query.api.extension.annotation.SiddhiExtension;

@SiddhiExtension(namespace = "testNamespace", function = "testFunction")
public class Test extends FunctionExecutor {
    Attribute.Type returnType;

    @Override
    public void init(Attribute.Type[] types, SiddhiContext siddhiContext) { }

    @Override
    protected Object process(Object object) {
        Object[] arrayObject;
        int param1 = 0;
        int param2 = 0;
        if (object instanceof Object[]) { // if you pass  params  into yours function in executionPlan, you will have arrayObject (remember about order)
            arrayObject = (Object[]) object;
            param1 = (Integer) arrayObject[0];
            param2 = (Integer) arrayObject[1];
        }
        return (param1 + param2);
    }

    @Override
    public void destroy() { }

    @Override
    public Attribute.Type getReturnType() {
        return returnType.INT; //type of what you want to return (STRING,  INT,  LONG,  FLOAT,  DOUBLE,  BOOL,  TYPE) or null <-- but then it doesn not make sense
    }
}
person Kacu    schedule 19.03.2015

Вы можете использовать рекомендации по следующей ссылке о том, как использовать расширение в вашем запросе siddhi.

https://docs.wso2.com/display/CEP310/Writing+a+Custom+Function

Чтобы получить зависимость расширения siddhi от проекта, используйте следующий репозиторий и зависимость в pom.xml.

<repositories>
    <repository>
        <id>wso2-maven2-repository</id>
        <name>WSO2 Maven2 Repository</name>
        <url>http://dist.wso2.org/maven2</url>
    </repository>
</repositories>

 <dependency>
        <groupId>org.wso2.siddhi</groupId>
        <artifactId>siddhi-core</artifactId>
        <version>2.0.0-wso2v4</version>
 </dependency>
person hYk    schedule 20.03.2015