2013-09-23 34 views
6

我試圖從代碼中激活某些頁面。我已經制作了一個工作流程,當某些內容在其他頁面上被修改時,這些工作流程將修改頁面,這些頁面對此頁面有引用。我試圖通過設置激活的屬性,如要做到這一點:如何以編程方式激活cq5工作流程中的頁面

parentpage.setProperty("cq:lastModified", Calendar.getInstance()); 
parentpage.setProperty("cq:lastModifiedBy", session.getUserID()); 

雖然這個屬性是每個時間去設置。但是在發佈實例中沒有發生激活。我們如何激活自定義工作流程本身的程序盟友?

回答

7

使用Replicator OSGi服務:

@Component 
public class MyComponent { 

    @Reference 
    private Replicator replicator; 

    private void activatePage(Session session) { 
    //... 
     replicator.replicate(session, ReplicationActionType.ACTIVATE, pathToPage); 
    //... 
    } 
} 

您不需要設置任何屬性。

+0

我以前嘗試過使用此代碼爲好,但我不斷收到空指針exception.could你提供幫助的@ Tomek Rekawek – Param1414086

+0

我很樂意幫助你,但你必須寫更多的細節。也許可以修改問題,並通過班級代碼和NPE堆棧跟蹤。 –

+0

你從哪裏獲得複製器本身?新的ReplicatorImpl(),並運行它? – AlleyGator

0

如果您沒有成分,那麼你可以注入的服務爲 - 。

Replicator replicator = getSling().getService(Replicator.class); 
相關問題