AEM 6.2 - 自定义工作流程步骤不起作用

时间:2017-05-25 10:17:46

标签: servlets adobe workflow aem

我创建了一个自定义工作流程步骤,但问题是当我尝试将其添加到新工作流程时,它不会显示在列表中。

我已经按照指南进行了操作并按照描述完成了所有操作。

我找不到任何错误消息。

在Web控制台中,我可以看到我的包。每次安装时它都会正确更新,但是,当我的工作流程包可见时,服务本身不可见。因此,看起来它没有被加载出于某种原因。

注意:可能不相关但使用“路径”的servlet也不起作用(它们在控制台的捆绑中不可见)。 AEM原型附带的示例servlet工作正常,但工作方式不同(它使用resourceType而不是路径)。

此外,在Eclipse中,它表示不推荐使用Felix scr注释,并且它们通过它们有一条线。我没有使用eclipse进行构建和安装,所以我不确定这是什么问题,但我认为值得一提。

由于

编辑 - 这是一些示例代码:

package company.aem.core.workflow;

import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;

import org.apache.felix.scr.annotations.Component; // <--- shows up as deprecated
import org.apache.felix.scr.annotations.Properties;// <--- shows up as deprecated
import org.apache.felix.scr.annotations.Property;// <--- shows up as deprecated
import org.apache.felix.scr.annotations.Service;// <--- shows up as deprecated
import org.apache.sling.api.resource.ResourceResolver;
import org.osgi.framework.Constants;

import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import com.adobe.granite.workflow.metadata.MetaDataMap;

@Component // <----- this shows up as deprecated in eclipse
@Service // <----- this shows up as deprecated in eclipse
public class CommunityObjectsDeploymentWorkflow implements WorkflowProcess {

    @Property(value = "Test workflow implementation") // <----- this shows up as deprecated in eclipse
    static final String DESCRIPTION = Constants.SERVICE_DESCRIPTION; 
    @Property(value = "Some vendor") // <----- this shows up as deprecated in eclipse
    static final String VENDOR = Constants.SERVICE_VENDOR;
    @Property(value = "My Sample Workflow Process") // <----- this shows up as deprecated in eclipse
    static final String LABEL="My test workflow";

    @Override
    public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException {

        Session session = (Session) workflowSession.adaptTo(Session.class);
        Workspace workspace = session.getWorkspace();

        try {
            // do JCR related stuff
        } catch (RepositoryException e) {
            e.printStackTrace();
        }

    }
}

编辑:解决方案是选择正确的组件注释导入。

改变这个:

import org.apache.felix.scr.annotations.Component;

对此:

import org.osgi.service.component.annotations.Component;

现在服务正在运行,并且在Web控制台中可见。

注意:尽管其他注释在技术上已被弃用,但它们仍然有效。看起来只需要改变组件一。

要在流程编辑器中显示它,它需要 process.label 属性(使用Felix包中的Property注释),如下所示:

import org.apache.felix.scr.annotations.Property;
@Property(value = "My Sample Workflow Process")
    static final String LABEL="process.label";

2 个答案:

答案 0 :(得分:2)

任何工作流程过程都需要名称为 process.label 的属性才能显示在工作流程步骤的流程列表中。 给定的示例代码中缺少此属性。

关于Apache Felix SCR注释的弃用警告的另一个注释。这些注释已被弃用,有利于标准的OSGi声明性服务注释。

答案 1 :(得分:1)

我已经更新了原帖以及更多详细信息。问题是@Component注释导入。我正在使用Felix。我将它更改为OSGi,它在Eclipse中作为一个选项出现并且有效。

另外,要在工作流编辑器中显示自定义工作流步骤,您还需要具有 process.label 属性。我的原始代码没有,但我已经改变了它,现在也可以看到它。

相关问题