4

ドキュメントが Alfresco Webscript に添付されているワークフローのリストを取得しようとしていますが、行き詰まっています。

私の最初の問題は、ファイルのリストがあり、現在のユーザーにこれらのドキュメントでワークフローが割り当てられている可能性があることです。そこで、フォルダーを検索し、そこにあるすべてのドキュメントを取得し、現在のユーザー用のドキュメントがある場合は、タスク参照と共にドキュメントのリストを作成する Web スクリプトを作成したいと考えています。

現在のユーザーのワークフローのリストを提供する「ワークフロー」オブジェクトについては知っていますが、これは私の問題の解決策ではありません。

では、特定のドキュメントが添付されているワークフローのリストを取得できますか?

4

3 に答える 3

5

さて、今後の参考のために、JavaScript からドキュメントのすべてのアクティブなワークフローを取得する方法を見つけました。

var nodeR = search.findNode('workspace://SpacesStore/'+doc.nodeRef);
    for each ( wf in nodeR.activeWorkflows )
    { 
        // Do whatever here.
    }
于 2010-09-24T11:24:38.957 に答える
4

残念ながら、javascript API はすべてのワークフロー機能を公開しているわけではありません。ドキュメントに添付されているワークフロー インスタンスのリストの取得は、Java (または Java でサポートされた Web スクリプト) でのみ機能するようです。

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

この使用法は、ドキュメントの詳細のワークフロー リストに記載されています。 org/alfresco/web/ui/repo/component/UINodeWorkflowInfo.java

タスクが割り当てられているユーザーにアクセスするには、WorkflowService のgetWorkflowPathsメソッドとgetTasksForWorkflowPathメソッドを使用する必要があります。

于 2010-08-24T11:53:16.483 に答える
4

ドキュメントのワークフローを見つけるために packageContains 関連付けを使用しました。以下に、アクティブなワークフロー(zladuricが答えたように)とすべてのワークフローのコードをAlfresco JavaScriptに投稿しました。

/*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();
于 2012-11-14T11:44:47.883 に答える