我試圖創建一個窗體過濾器,這將做一些窗體的後處理。Alfresco窗體過濾器
我試圖實現的是: 每次創建或修改節點時,都應在節點持久化後應用過濾器。
當我編輯/修改現有的,但它不會在創建新節點後運行它運行得很好。
這裏是我的代碼:
public class CaseFormFilter extends AbstractFilter<Object, NodeRef>
{
protected ServiceRegistry registry;
protected NodeService nodeService;
protected SearchService searchService;
protected SiteService siteService;
protected NamespaceService namespaceService;
public void setServiceRegistry (ServiceRegistry registry)
{
this.registry = registry;
this.nodeService = this.registry.getNodeService();
this.searchService = this.registry.getSearchService();
this.siteService = this.registry.getSiteService();
this.namespaceService = this.registry.getNamespaceService();
}
@Override public void afterPersist(Object item, FormData data, NodeRef persistedObject)
{
System.out.println("Persisting!");
}
@Override public void afterGenerate(Object item, List fields, List forcedFields, Form form, Map context)
{
System.out.println("Calling afterGenerate!!");
}
@Override public void beforeGenerate(Object item, List fields,
List forcedFields, Form form, Map context)
{
System.out.println("Calling beforeGenerate!!");
}
@Override public void beforePersist(Object item, FormData data)
{
System.out.println("Calling beforePersist!!");
}
}
我可以看到beforeGenerate
和afterGenerate
總是被調用,查看,即使,這是有道理的。 但是,afterPersist
僅在編輯節點時運行,而不在創建新節點時運行。
我做錯了什麼或缺少什麼?維基/文檔在這一點上是無用的,閱讀http://wiki.alfresco.com/wiki/Forms_Developer_Guide#Form_Filter只是告訴我看看DOD5015模塊,它提供了一個例子,但並沒有真正提供任何答案。
我使用的是Alfresco 4.0.b社區版。
編輯:多一點澄清
你是對的!它在使用typeFilter註冊後起作用。現在我只需要弄清楚它實際發送的內容作爲持久對象,但至少我的方法已經運行了! – ohej
我想知道你是如何知道這樣的東西的,關於它的文檔/維基是很不清楚的:/ – ohej
你是對的,缺乏這方面的文檔。當我第一次使用它時,我不得不將它從博客文章和源代碼拼湊在一起。 – Florian