2013-08-30 2 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? я попробовал ваш сценарий, и он не работает - это конкретная версия этого делает, хотя:

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(); 
     } 
} 

к сведению, что вместо гранита *, это просто WorkItem и workSession. также обратите внимание, что WorkflowSession не имеет метода adaptTo() (если я не использую более старую версию cq, чем вы). он уже имеет метод getSession() как часть интерфейса.

, даже если это все сказано и сделано, это не удалось из-за содержимого, которое я отправлял через рабочий процесс. Убедитесь, что узел, который вы пытаетесь записать, принимает эти имена свойств. сд: Страница является очень ограниченной, но сд: PageContent не (так извлечь JCR: содержание подузла, при условии, что вы запускать рабочие процессы против счей: Страница или дамбы: узлы Активов):

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

принята. последний бит об использовании cq: PageContent был для меня. – bongman1612