هل من الممكن الحصول على قائمة من مهام سير العمل التي يتم توصيل المستند في الهواء الطلق

StackOverflow https://stackoverflow.com/questions/3530952

  •  30-09-2019
  •  | 
  •  

سؤال

أحاول الحصول على قائمة من مهام سير العمل التي يتم إرفاقها في ويب في الهواء الطلق ، لكنني عالق.

مشكلتي الأصلية هي أن لدي قائمة بالملفات ، وقد يكون للمستخدم الحالي سير عمل مخصص له بهذه المستندات. لذا ، أرغب الآن في إنشاء WebScript الذي سيبحث في مجلد ، وأخذ جميع المستندات هناك ، وتجميع قائمة من المستندات مع مراجع المهام ، إذا كان هناك أي للمستخدم الحالي.

أعرف كائن "سير العمل" الذي يعطيني قائمة سير العمل للمستخدم الحالي ، ولكن هذا ليس حلاً لمشكلتي.

لذلك ، هل يمكنني الحصول على قائمة من مهام سير العمل التي يتم إرفاق وثيقة معينة؟

هل كانت مفيدة؟

المحلول

حسنًا ، للرجوع إليها في المستقبل ، وجدت طريقة للحصول على جميع مهام سير العمل النشطة على مستند من JavaScript:

var nodeR = search.findNode('workspace://SpacesStore/'+doc.nodeRef);
    for each ( wf in nodeR.activeWorkflows )
    { 
        // Do whatever here.
    }

نصائح أخرى

لقد استخدمت جمعية PackageContains للعثور على سير العمل للوثيقة. أدناه نشرت رمزًا في Alfresco JavaScript لسير العمل النشط (كما أجاب Zladuric) وأيضًا لجميع مهام سير العمل:

/*global search, logger, workflow*/
var getWorkflowsForDocument, getActiveWorkflowsForDocument;

getWorkflowsForDocument = function () {
    "use strict";
    var doc, parentAssocs, packages, packagesLen, i, pack, props, workflowId, instance, isActive;
    //
    doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
    parentAssocs = doc.getParentAssocs();
    packages = parentAssocs["{http://www.alfresco.org/model/bpm/1.0}packageContains"];
    //
    if (packages) {
        packagesLen = packages.length;
        //
        for (i = 0; i < packagesLen; i += 1) {
            pack = packages[i];
            props = pack.getProperties();
            workflowId = props["{http://www.alfresco.org/model/bpm/1.0}workflowInstanceId"];
            instance = workflow.getInstance(workflowId);
            /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
            isActive = instance.isActive();
            logger.log(" + instance: " + workflowId + " (active: " + isActive + ")");
        }
    }
};

getActiveWorkflowsForDocument = function () {
    "use strict";
    var doc, activeWorkflows, activeWorkflowsLen, i, instance;
    //
    doc = search.findNode("workspace://SpacesStore/8847ea95-108d-4e08-90ab-34114e7b3977");
    activeWorkflows = doc.activeWorkflows;
    activeWorkflowsLen = activeWorkflows.length;
    for (i = 0; i < activeWorkflowsLen; i += 1) {
        instance = activeWorkflows[i];
        /* instance is org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance */
        logger.log(" - instance: " + instance.getId() + " (active: " + instance.isActive() + ")");
    }
}


getWorkflowsForDocument();
getActiveWorkflowsForDocument();

لسوء الحظ ، لا يعرض API JavaScript جميع وظائف سير العمل. يبدو أن الحصول على قائمة بحالات سير العمل المرفقة بمستند يعمل فقط في Java (أو WebScripts المدعومة من Java).

List<WorkflowInstance> workflows = workflowService.getWorkflowsForContent(node.getNodeRef(), true);

يمكن العثور على استخدام لهذا في قائمة سير العمل في تفاصيل الوثيقة: http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/head/root/projects/web-corce/java/org/alfresco/web/ui/Repo/Component/uinoDeworkflowinfo.java

للوصول إلى المستخدمين الذين لديهم مهام مخصصة ، ستحتاج بعد ذلك إلى استخدامها GetWorkFlowPaths و getTasksForWorkFlowPath طرق خدمة سير العمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top