2013-09-23 7 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 NULLポインタを取得しておくのです@。 Tomek Rekawek – Param1414086

+0

私はあなたを助けたいと思っていますが、詳細を書かなければなりません。おそらく質問を修正し、クラスコードとNPEスタックトレースを修正してください。 –

+0

レプリケータ自体はどこから手に入りますか?新しいReplicatorImpl()とそれだけで実行できますか? – AlleyGator

0

コンポーネントを持っていない場合、あなたのようにサービスを注入することができます -

Replicator replicator = getSling().getService(Replicator.class); 
関連する問題