2013-08-30 1 views
2

페이지 활성화시 페이지에 속성을 추가해야합니다. 활성화 단계 전에 동일하게 수행하는 워크 플로 프로세스를 설정하기로 결정했습니다. 내 사용자 지정 워크 플로 단계 (활성화 단계 이전의 단계)에서 ECMA 스크립트를 사용하여이 작업을 수행합니다. 여기 내가 지금까지 가지고있는 것이있다. 나는 페이지의 워크 플로우를 실행할 때ECMA 스크립트를 사용하여 노드 (페이지)에 새 속성 추가

var workflowData = graniteWorkItem.getWorkflowData(); 
if (workflowData.getPayloadType() == "JCR_PATH") { 
    var path = workflowData.getPayload().toString(); 
    var jcrsession = graniteWorkflowSession.adaptTo(Packages.javax.jcr.Session); 
    var node = jcrsession.getNode(path); 
    if (!node.hasProperty("foo")){ 
    var cal = Packages.java.util.Calendar.getInstance(); 
      node.setProperty("foo", cal); 
      node.save(); 
     } 
if (!node.hasProperty("foo2")){ 
      node.setProperty("foo2", "2020-08-26T22:30:00.000+05:30"); 
      node.save(); 
     } 
} 

그러나, 내가 필요로하는 속성을 생성하려면 (foo는이 인스턴스에서는 foo2)이 생성되지 않습니다.

내가 뭘 잘못하고 있니?

답변

1

error.log의 테일링을 시도 했습니까? 내가 스크립트를 시도하고 작동하지 않았다 - 그것의 특정 버전을 수행합니다,하지만 대신 화강암 *, 그것은 단지의 workItem 및 작업 세션의

var workflowData = workItem.getWorkflowData(); 
if (workflowData.getPayloadType() == "JCR_PATH") { 
    var path = workflowData.getPayload().toString(); 
    var jcrsession = workflowSession.getSession(); 
    var node = jcrsession.getNode(path); 
    if (!node.hasProperty("foo")){ 
    var cal = Packages.java.util.Calendar.getInstance(); 
      node.setProperty("foo", cal); 
      node.save(); 
     } 
if (!node.hasProperty("foo2")){ 
      node.setProperty("foo2", "2020-08-26T22:30:00.000+05:30"); 
      node.save(); 
     } 
} 

메모를. 또한 WorkflowSession에는 adaptTo() 메서드가 없습니다 (이전 버전의 cq를 사용하지 않는 한). 이미 인터페이스의 일부로 getSession() 메소드가 있습니다.

이 모든 것이 수행되고 완료된 경우에도 워크 플로를 통해 전송 한 콘텐츠로 인해 실패했습니다. 쓰기를 시도하는 노드가 해당 속성 이름을 허용하는지 확인하십시오. CQ : 페이지는 매우 제한하지만, CQ입니다 : PageContent은 (자산 노드 : 페이지 또는 댐 : 당신이 CQ에 대한 워크 플로우를 시작하고 가정의 콘텐츠 하위 노드 때문에 JCR 검색) :되지

var node = jcrsession.getNode(path).getNode("jcr:content"); 
+0

을 받아 들였다. cq를 사용하는 마지막 비트 : PageContent는 나를 위해 무엇을했는지입니다. – bongman1612