如何覆盖一些基于 ajax 的选择器逻辑?

How to override some of ajax based picker logic?

Alfresco Community v5.2(其他版本也一样)包括页面上可用的一些预配置工作流 /share/page/start-workflow

我对"Review and Approve (one or more reviewers) - Assign a review task to multiple reviewers"感兴趣。

实际上,更准确地说 - 在赋值逻辑中。

比如我想做一些定制 - Customization of the user task screen

我想显示 table 中的成员,而不是列表中的成员。为此,我需要了解它们在列表中的显示方式。

在文件中 share-config-custom.xml 我可以找到模板的路径。

例如,对于 bpm:workflowDueDate 它将是:

...
<field id="bpm:workflowDueDate" set="info" label-id="workflow.field.due">
  <control template="/org/alfresco/components/form/controls/info.ftl" />
</field>
...

但是 bpm:assignees 没有指定模板:

...
<field id="bpm:assignee" label-id="workflow.field.reviewer" set="assignee" />
...

我假设有一些后端 bean 执行大部分逻辑。

如何覆盖某些基于 ajax 的选择器逻辑?

如果在共享表单配置中未提供表单控件,Alfresco Share 会回退到某些默认值,具体取决于字段类型。

bpm:assignee is an association 到一个人节点,所以我希望它默认指向 association.ftl !

我建议将该文件复制到一个新文件中 src/main/amp/alfresco/site-webscripts/${project.groupId}/form/controls/custom-association.ftl

然后在您的 share-config-custom.xml 中通过一个小的更新复制任务的表单配置:

...
<field id="bpm:assignee" label-id="workflow.field.reviewer" set="assignee" >
  <control template="/${project.groupId}/form/controls/custom-association.ftl" />
</field>
...

然后您可以安全地 fiddle 和 custom-association.ftl 因为覆盖露天默认值几乎不是一个好主意!


更新: 该控件的值是引用所选用户节点的 nodeRefs 列表。它是 ObjectFinder Java 脚本对象,它在幕后管理事物,调用一个特殊端点来获取要显示的所有类型的数据,然后相应地操作 DOM!你可能想看看 object-finder.js and picker.inc.ftl