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

时间:2017-03-28 14:23:43

标签: alfresco alfresco-share

在开始业务流程之前,我选择了附件。我可以多次这样做,删除附件并再次选择。

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

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

...
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

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

我将非常感谢这些信息。谢谢大家。

1 个答案:

答案 0 :(得分:1)

事实上,所有这些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服务获取所有必需的属性。