我试图创建一个窗体过滤器,这将做一些窗体的后处理。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