2016-07-18 32 views
0

Mavenをビルドマネージャーとして使用しています。アドビが提供するUberJarの曖昧さのない.m2ローカルフォルダを更新しました。私は、次のエラーを取得しています:AEM 6.1 Uber Jar Maven依存関係

ERROR [JobHandler: /etc/workflow/instances/server0/2016-07-15/model_157685507700064:/content/myApp/testing/wf_test01] com.adobe.granite.workflow.core.job.JobHandler Process implementation not found: com.myApp.workflow.ActivatemyAppPageProcess com.adobe.granite.workflow.WorkflowException: Process implementation not found: com.myApp.workflow.ActivatemyAppPageProcess at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:197) at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:232) at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512) at org.apache.sling.event.impl.jobs.queues.JobRunner.run(JobRunner.java:205) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

UberJarcom.adobe.granite.workflow.core.jobパッケージを持っていないようです。この問題を解決する方法はありますか?プロセスステップActivatemyAppPageProcessため

.execute方法:

public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException { 
    Session participantSession = null; 
    Session replicationSession = null; 
    // ResourceResolver resourceResolver = null; 
    try { 
     log.info("Inside ActivatemyAppPageProcess "); 
     Session session = workflowSession.getSession(); 
     if (replicateAsParticipant(args)) { 
      String approverId = resolveParticipantId(workItem, workflowSession); 
      if (approverId != null) { 
       participantSession = getParticipantSession(approverId, workflowSession); 
      } 
     } 
     if (participantSession != null) 
      replicationSession = participantSession; 
     else { 
      replicationSession = session; 
     } 

     WorkflowData data = workItem.getWorkflowData(); 
     String path = null; 
     String type = data.getPayloadType(); 
     if ((type.equals("JCR_PATH")) && (data.getPayload() != null)) { 
      String payloadData = (String) data.getPayload(); 
      if (session.itemExists(payloadData)) 
       path = payloadData; 
      } 
      else if ((data.getPayload() != null) && (type.equals("JCR_UUID"))) { 
       Node node = session.getNodeByUUID((String) data.getPayload()); 
       path = node.getPath(); 
      } 
      ReplicationOptions opts = null; 
      String rev = (String) data.getMetaDataMap().get("resourceVersion", String.class); 
      if (rev != null) { 
       opts = new ReplicationOptions(); 
       opts.setRevision(rev); 
      } 
      opts = prepareOptions(opts); 

      if (path != null) { 
       ResourceCollection rcCollection = 
        ResourceCollectionUtil 
         .getResourceCollection(
          (Node) this.admin.getItem(path), 
           (ResourceCollectionManager) this.rcManager); 
       boolean isWFPackage = isWorkflowPackage(path, resolverFactory, workflowSession); 
       List<String> paths = getPaths(path, rcCollection); 
       for (String aPath : paths) 
        if (canReplicate(replicationSession, aPath)) { 
         if (opts != null) { 
          if (isWFPackage) { 
           setRevisionForPage(aPath, opts, data); 
          } 
          this.replicator 
            .replicate(replicationSession, 
                getReplicationType(), 
                 aPath, 
                  opts); 
          } else { 
           this.replicator 
             .replicate(replicationSession, 
                 getReplicationType(), 
                  aPath); 
         } 
        } else { 
         log.debug(session.getUserID() + " is not allowed to replicate " + "this page/asset " + aPath + ". Issuing request for 'replication"); 

         Dictionary properties = new Hashtable(); 
         properties.put("path", aPath); 
         properties.put("replicationType", getReplicationType()); 
         properties.put("userId", session.getUserID()); 
         Event event = new Event("com/day/cq/wcm/workflow/req/for/activation", properties); 
         this.eventAdmin.sendEvent(event); 
        } 
      } else { 
       log.warn("Cannot activate page or asset because path is null for this workitem: " + workItem.toString()); 
      } 
     } catch (RepositoryException e) { 
      throw new WorkflowException(e); 
     } catch (ReplicationException e) { 
      throw new WorkflowException(e); 
     } finally { 
      if ((participantSession != null) && (participantSession.isLive())) { 
       participantSession.logout(); 
       participantSession = null; 
      } 
     } 
    } 
+0

どのようにしてuber-jar依存関係を追加しましたか? POMの部分のコピーを追加できますか? –

+0

次のように私はPOMの依存関係を追加しました: com.adobe.aem ユーバージャー 6.1。 Redman

+0

を提供0 のAPI は正しい見えます。下の私のansertを参照してください、パッケージは単にアクセスできません。 –

答えて

2

com.adobe.granite.workflow.core.jobは全くAEMでエクスポートされていません。つまり、コードには見えないため、使用できません。

com.adobe.granite.workflow.coreバンドルはcom.adobe.granite.workflow.core.eventのみをエクスポートします。 AEMワークフローを使用する場合は、com.adobe.granite.workflow.apiバンドルに固執する必要があります。

次のパッケージがこのバンドルでエクスポートため、使用可能なされています

com.adobe.granite.workflow,version=1.0.0 
com.adobe.granite.workflow.collection,version=1.1.0 
com.adobe.granite.workflow.collection.util,version=1.0.0 
com.adobe.granite.workflow.event,version=1.0.0 
com.adobe.granite.workflow.exec,version=1.0.0 
com.adobe.granite.workflow.exec.filter,version=1.0.0 
com.adobe.granite.workflow.job,version=1.0.0 
com.adobe.granite.workflow.launcher,version=1.0.0 
com.adobe.granite.workflow.metadata,version=1.0.0 
com.adobe.granite.workflow.model,version=1.0.0 
com.adobe.granite.workflow.rule,version=1.0.0 
com.adobe.granite.workflow.serialization,version=1.0.0 
com.adobe.granite.workflow.status,version=1.0.0 

uber.jarあなたは/system/console/bundles上のAEMインスタンス上で見て、com.adobe.granite.workflow.coreパッケージをクリックすると、あなたが表示されます、パッケージを持っている場合でも、 「輸出パッケージ」にはcom.adobe.granite.workflow.core.jobがありません。そのため、IDE、Maven、Jenkinsで処理できる場合でも、AEMはコードを実行できません。

AEMでは、使用可能なバンドルの1つにエクスポートされたパッケージ、またはバンドルに含まれているパッケージのみを使用できます。これは悪い考えです。同じコードの2つのバージョンを使用すると、さらに問題が発生します。

コードを見て、ここに別の問題があると言います。それを解決すれば、他のものも取り除くのに役立ちます。

ワークフローで既に使用されているパスに対して別のWF(アクティブ化要求)を開始しようとしています。 これを行うには、現在のワークフローインスタンスを終了する必要があります。

これを行うにはきれいな方法は以下のようになり用例:

Workflow workflow = workItem.getWorkflow(); 
WorkflowData wfData = workflow.getWorkflowData(); 
workflowSession.terminateWorkflow(workflow); 
Map<String, Object> paramMap = new HashMap<String, Object>(); 
if (!StringUtils.isEmpty(data.getNextParticipantUid())) { 
    paramMap.put("nextParticipant", "admin"); 
} 
workflowSession.startWorkflow(
    workflowSession.getModel(WORKFLOW_MODEL_PATH, wfData, paramMap); 
+0

私が使用していますユーバージャーが言及したパッケージを持っている...ので、com.adobe.granite.workflow.apiバンドルを使用して、問題を解決していません。あなたがシステム/コンソール/バンドル/上のAEMインスタンス上で見て、com.adobe.granite.workflow.coreをクリックするとuber.jarは、(私はそれがそれらを持っていないと言ったことはありません)のパッケージを持っている場合であっても – Redman

+0

パッケージには、「エクスポートされたパッケージ」にはcom.adobe.granite.workflow.core.jobはありません。そのため、IDE、Maven、Jenkinsで処理できる場合でも、AEMはコードを実行できません。 –

+0

はい、その方向に対するセンス..感謝します..しかし、今まさにあなたが次第ですどのようなエラー – Redman

0

エラーの考えられる理由は、そのJobHandlerのにバインドされていないそのため、ワークフロー・プロセスcom.myApp.workflow.ActivatemyAppPageProcessサービス/コンポーネントがアクティブでないことが考えられ利用可能なプロセスのリストで、この例外が発生します。

/system/console/componentsでカスタムプロセスコンポーネントがアクティブであることを確認できますか?そうでなければ、サービス/コンポーネントが利用できないようにする依存関係を解決する必要があります。

+0

私のカスタムプロセスコンポーネントは「満足」状態です。 – Redman

+0

コンポーネントがアクティブで、すべての依存関係が満たされていることを意味しますか? –

+0

uはコンポーネントが「満足」された部品情報(拡大) –

関連する問題