0

Alfrescoドキュメントリファレンスがあります。私が探しているのは、そのドキュメントに添付されているワークフローにアクセスし、Javascriptを介してそれを終了する(または次の移行に進む)方法です。

Web上のほとんどすべての例は、ワークフローを開始する方法を示しています。ダッシュレットから、タスクIDを知っていれば、タスクコマンドプロセッサ(/ alfresco / command / task / end / [/ transition])を呼び出すことができますが、どうすればよいですか?ドキュメント参照からのみ開始するサーバー側のWebスクリプトからも同じことですか?

ドキュメントからワークフローにアクセスし、プログラムで管理する方法が必要です。

4

2 に答える 2

1

ドキュメントnodeRefから、次のように現在のタスクを通知できます。

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    for (var transitionKey in task.transitions)
    {
        if (task.transitions[transitionKey] == transitionId)
        {
            path.signal(transitionId);
            break;
        }
    }
}

デフォルトの遷移を通知する場合は、内側のループをスキップして、次のようにすることができます。

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    // Signal default transition
    path.signal(null);
}
于 2010-06-18T20:33:11.370 に答える
0

さて、私はまだ移行する方法がわかりませんが、私が見つけたことがいくつかあります。

まず、ドキュメントが参加しているワークフローにアクセスしてキャンセルできます。

for each (workflow in document.activeWorkflows) {
    workflow.cancel();
}

しかし、私はまだタスクを進める方法がよくわかりません。私はその仕事に取り掛かり、それを使って何かをすることができます:

var task = workflow.getTask(taskId);
task.endTask(transitionId);

...しかし、プログラムで、またはAlfrescoを介して、taskIdまたはtransitionIdに到達する方法がまだわかりません。

編集:それを理解しました、transitionIdは実際にはワークフロープロセス定義XMLで定義された遷移名です:

<transition name="SomeTransitionId" to="end">

また、ワークフローからタスクのリストを取得するには、パス(workflow.getPaths())を反復処理してから、path.getTasks()を使用してタスクを反復処理します。

于 2010-04-08T19:12:47.333 に答える