написание пользовательской функции / расширения потока siddhi, не получая ни расширения функции, ни агрегированного расширения атрибута - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в WSO2 Sp и siddhi.

Я пытаюсь создать собственное расширение сиддхи. Я использовал приведенный ниже архетип для генерации расширения скелета и попытался изменить класс функции и функции streamfunction.

mvn archetype:generate -DarchetypeGroupId=org.wso2.siddhi.extension.archetype -DarchetypeArtifactId=siddhi-archetype-execution -DgroupId=org.wso2.extension.siddhi.execution -Dversion=1.0.0-SNAPSHOT

Я собрал флягу после внесения изменений в код и развернул флягу в пути $WSO2_SP_HOME/lib. Но когда я ссылаюсь на свою функцию в файле siddhi, как показано ниже, я получаю ошибку.

select newns:conv(inValue) as sinValue
insert into OutputStream;

Ошибка выглядит следующим образом:

[2020-02-03 13:44:23,042] ERROR {org.wso2.carbon.stream.processor.core.internal.StreamProcessorDeployer} - org.wso2.siddhi.core.exception.SiddhiAppCreationException: Error on 'TestCustomApp' @ Line: 12. Position: 26, near 'newns:conv(inValue)'. 'conv' is neither a function extension nor an aggregated attribute extension org.wso2.carbon.stream.processor.core.internal.exception.SiddhiAppDeploymentException: org.wso2.siddhi.core.exception.SiddhiAppCreationException: Error on 'TestCustomApp' @ Line: 12. Position: 26, near 'newns:conv(inValue)'. 'conv' is neither a function extension nor an aggregated attribute extension
        at org.wso2.carbon.stream.processor.core.internal.StreamProcessorDeployer.deploySiddhiQLFile(StreamProcessorDeployer.java:106)
        at org.wso2.carbon.stream.processor.core.internal.StreamProcessorDeployer.deploy(StreamProcessorDeployer.java:330)
        at org.wso2.carbon.deployment.engine.internal.DeploymentEngine.lambda$deployArtifacts$0(DeploymentEngine.java:291)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at org.wso2.carbon.deployment.engine.internal.DeploymentEngine.deployArtifacts(DeploymentEngine.java:282)
        at org.wso2.carbon.deployment.engine.internal.RepositoryScanner.sweep(RepositoryScanner.java:112)
        at org.wso2.carbon.deployment.engine.internal.RepositoryScanner.scan(RepositoryScanner.java:68)
        at org.wso2.carbon.deployment.engine.internal.DeploymentEngine.start(DeploymentEngine.java:121)
        at org.wso2.carbon.deployment.engine.internal.DeploymentEngineListenerComponent.onAllRequiredCapabilitiesAvailable(DeploymentEngineListenerComponent.java:216)
        at org.wso2.carbon.kernel.internal.startupresolver.StartupComponentManager.lambda$notifySatisfiableComponents$7(StartupComponentManager.java:266)
        at java.util.ArrayList.forEach(ArrayList.java:1257)
        at org.wso2.carbon.kernel.internal.startupresolver.StartupComponentManager.notifySatisfiableComponents(StartupComponentManager.java:252)
        at org.wso2.carbon.kernel.internal.startupresolver.StartupOrderResolver$1.run(StartupOrderResolver.java:204)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
Caused by: org.wso2.siddhi.core.exception.SiddhiAppCreationException: Error on 'TestCustomApp' @ Line: 12. Position: 26, near 'newns:conv(inValue)'. 'conv' is neither a function extension nor an aggregated attribute extension
        at org.wso2.siddhi.core.util.parser.ExpressionParser.parseExpression(ExpressionParser.java:415)
        at org.wso2.siddhi.core.util.parser.SelectorParser.getAttributeProcessors(SelectorParser.java:211)
        at org.wso2.siddhi.core.util.parser.SelectorParser.parse(SelectorParser.java:89)
        at org.wso2.siddhi.core.util.parser.QueryParser.parse(QueryParser.java:115)
        at org.wso2.siddhi.core.util.parser.SiddhiAppParser.parse(SiddhiAppParser.java:245)
        at org.wso2.siddhi.core.SiddhiManager.createSiddhiAppRuntime(SiddhiManager.java:65)
        at org.wso2.siddhi.core.SiddhiManager.createSiddhiAppRuntime(SiddhiManager.java:74)
        at org.wso2.carbon.stream.processor.core.internal.StreamProcessorService.deploySiddhiApp(StreamProcessorService.java:100)
        at org.wso2.carbon.stream.processor.core.internal.StreamProcessorDeployer.deploySiddhiQLFile(StreamProcessorDeployer.java:94)
        ... 14 more

Я также могу извлечь содержимое файла jar и увидеть, что папка аннотации содержит org.wso2.siddhi.annotation.Extension файл с моим именем класса.

Не уверен, что еще не хватает. Пожалуйста, помогите здесь.

1 Ответ

0 голосов
/ 10 февраля 2020

Проверьте правильность аннотации @Extension () в вашем классе, пространство имен должно быть "newns", а имя - "conv" https://github.com/siddhi-io/siddhi-execution-list/blob/master/component/src/main/java/io/siddhi/extension/execution/list/IsEmptyFunctionExtension.java#L42

Также обратите внимание, что вы должны реализовали класс функции

...