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

Servlets AEM 6.2-自定义工作流步骤不起作用,servlets,adobe,workflow,aem,Servlets,Adobe,Workflow,Aem,我创建了一个自定义工作流步骤,但问题是当我尝试将其添加到新工作流时,该步骤没有显示在列表中 我遵循指南,做了所描述的一切都没有用 我找不到任何错误消息 在web控制台中,我可以看到我的包。每次我安装它时,它都会被正确地更新,但是,虽然我的工作流包是可见的,但服务本身是不可见的。所以,它看起来好像出于某种原因没有被加载 注意:可能不相关,但是使用“路径”的servlet也不起作用(它们在控制台的捆绑包中不可见)。AEM原型附带的示例servlet工作正常,但工作方式不同(它使用resourceTy

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

我遵循指南,做了所描述的一切都没有用

我找不到任何错误消息

在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.osgi.service.component.annotations.Component;
现在该服务正在运行,并且在web控制台中可见

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

要使其在process editor中可见,它需要process.label属性(使用Felix包中的属性注释),如下所示:


任何工作流流程都需要一个名为“process.label”的属性,该属性将显示在工作流步骤的流程列表中。 给定的示例代码中缺少此属性


关于ApacheFelixSCR注释的弃用警告的另一个注意事项。这些注释已经被弃用,取而代之的是标准的OSGi声明性服务注释。

我更新了原始文章的更多细节。问题是@Component注释导入。我用的是费利克斯的。我把它改成了OSGi,它在Eclipse中作为一个选项出现,并且工作正常


另外,要使自定义工作流步骤显示在工作流编辑器中,还需要有一个process.label属性。我原来的代码没有,但我已经更改了它,现在它也在那里可见。

问题是,该服务甚至没有出现在web控制台中,这让我觉得它甚至没有运行。所以标签不应该有任何区别。在AEM中使用OSGi Declarative Services注释是否有任何文档?我找到的关于让AEM服务/组件使用Felix SCR注释的每个示例。我找不到任何你提到的例子。语法差别很大,我不能用通常的方式声明标签、描述或类似的东西。我已经用解决方案更新了我的原始帖子。您提到的OSGi声明性服务是正确的。谢谢
import org.osgi.service.component.annotations.Component;
import org.apache.felix.scr.annotations.Property;
@Property(value = "My Sample Workflow Process")
    static final String LABEL="process.label";