有没有办法在开始工作流程之前获取附件详细信息?

Is there way to get attachments details before starting the workflow?

在开始业务流程之前,我 select 附件。我可以做很多次,去掉附件再选择

我想显示包含附件信息的动态table。

例如,要检索所有附件的详细信息,我使用这样的代码:

...
var divWithAnchors = YAHOO.util.Selector.query("#page_x002e_data-form_x002e_task-details_x0023_default_assoc_packageItems-cntrl")[0];
var anchors = divWithAnchors.getElementsByTagName('a');

var attachments = new Array();
for(var i = 0; i < anchors.length; i++) {
    attachments[i] = anchors[i].href.split('=')[1];
}
...

它给了我对节点的引用,例如:

...
workspace://SpacesStore/c5a27463-c2aa-4c70-aca7-1f999d3ac76a
workspace://SpacesStore/29e9f035-403c-47b6-8421-624d584ff7eb
workspace://SpacesStore/712aaca2-9c90-4733-a690-bbf9bacb26e6
workspace://SpacesStore/68893fde-ee7c-4ecb-a2df-d4953dc69439
...

然后我可以向 REST 后端 (WebScripts) 发出 AJAX 请求并获得响应:

...
for(var i = 0; i < attachments.length; i++) {
    Alfresco.util.Ajax.jsonGet(
    ...
    // parse JSON and fill the table

这是正确的方法吗?我不确定 ID:

page_x002e_data-form_x002e_task-details_x0023_default_assoc_packageItems-cntrl

这是常量吗?..这个标识符可以改变吗?

事实上,所有这些NodeRef在对象selectedItems = {}中都可用,并且可以在方法getAddedItems()中获取(参见object-finder.js):

...

/**
* Selected items. Keeps a list of selected items for correct Add button state.
* 
* @property selectedItems
* @type object
*/
selectedItems: null,

...

/**
* Returns items that have been added to the current value
*
* @method getAddedItems
* @return {array}
*/
getAddedItems: function ObjectFinder_getAddedItems() {
    var addedItems = [],
    currentItems = Alfresco.util.arrayToObject(this.options.currentValue.split(","));

    for (var item in this.selectedItems) {
        if (this.selectedItems.hasOwnProperty(item)) {
            if (!(item in currentItems)) {
                addedItems.push(item);
            }
        }
    }

    return addedItems;
},

...

接下来,需要将这些 NodeRef 发送到 WebScript 并使用 NodeService 服务获取所有必要的属性。