Alfresco:如何在工作流程中过滤文档

时间:2015-03-08 22:31:45

标签: java workflow alfresco alfresco-share

我对Alfresco有特殊需求,不幸的是我不习惯使用这个产品。

实际上我的目的是在工作流程中仅显示协调员是登录用户且不在活动工作流程中的文档。

请知道:)

1 个答案:

答案 0 :(得分:1)

即使我不确定它是否是最好的解决方案,我也会提供解决方案。任何解决我问题的方法。

我修改了object-finder.js的方法ObjectRenderer_renderCellAdd,以检查用户是否是文档协调员,以及是否没有其他活动工作流链接到文档。

而不是:

elCell.innerHTML = '<a id="' + containerId + '" href="#" ' + style + '   class="add-item add-' + scope.eventGroup + '" title="' + scope.msg("form.control.object-picker.add-item") + '" tabindex="0"><span class="addIcon">&nbsp;</span></a>';

我说:

var showSelectLink = true;
if(oRecord.getData("type") == "cm:content"){
showSelectLink = false;
//Checking if the document is already in an other active worflow
var xmlHttp = new XMLHttpRequest();
var url = window.location.href;
var arr = url.split("/");
xmlHttp.open( "GET", (arr[0] + "//" + arr[2]).concat("/alfresco/s/api/node/").concat((oRecord.getData("nodeRef")).replace(":/","")).concat("/workflow-instances"), false );
xmlHttp.send( null );

if(json.data.length == 0){
//Checking if the logged on user is the document coordinator
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", (arr[0] + "//" + arr[2]).concat("/alfresco/s/slingshot/doclib/permissions/").concat((oRecord.getData("nodeRef")).replace(":/","")), false );
    xmlHttp.send( null );
    var json = JSON.parse(xmlHttp.responseText);
    var hasDirectPermission = false;
    //Direct permission
    if(json.direct.length != 0){
        var permission;
        for(var index = 0; index < json.direct.length; index++){
            permission = json.direct[index];
            if(permission.role == "Coordinator"){
                showSelectLink = true;
                hasDirectPermission = true;
                break;
            }
        }
    }
    //Inherited Permission
    if(!hasDirectPermission && json.inherited.length != 0){
        var permission;
        for(var index = 0; index < json.inherited.length; index++){
            permission = json.inherited[index];
            if(permission.role == "Coordinator"){
                showSelectLink = true;
                break;
            }
        }
    }
}
}

if(showSelectLink){
   elCell.innerHTML = '<a id="' + containerId + '" href="#" ' + style + ' class="add-item add-' + scope.eventGroup + '" title="' + scope.msg("form.control.object-picker.add-item") + '" tabindex="0"><span class="addIcon">&nbsp;</span></a>';
 }

此致