ウェブスクリプトを使用してのAlfrescoのワークフローを進めます

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

  •  20-09-2019
  •  | 
  •  

質問

私はのAlfrescoのドキュメント参照を持っています。私が探しているのJavascriptを通じてその文書に添付ワークフローにアクセスし、それを終了(または次の遷移にそれを進行)する方法です。

ウェブ上のほぼすべての例では、ワークフローを開始する、とダッシュレットから私は、タスクIDを知っていれば(/屋外/コマンド/タスク/終了/ [/トランジション])タスクコマンドプロセッサを呼び出すが、どのように行うことができます方法を示しています私は、文書の参照からのみ起動、サーバー側のWebスクリプトから同じことを行う?

ドキュメントからワークフローにアクセスし、プログラム的にそれらを管理する方法が存在する必要があります。

役に立ちましたか?

解決

あなたはこのように現在のタスクに信号を送ることができる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);
}

他のヒント

まあ、私はまだ移行する方法を知りませんが、私が見つけた物事のカップルがあります。

まず、私は文書が参加ワークフローにアクセスし、それを取り消すことができます:

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

しかし、私はまだ作業を進行するかどうかは非常にわかりません。私は仕事に取得し、それを使って何かを行うことができます:

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

...しかし、私はまだプログラムまたはアルフレスコを通じて、のtaskIdまたはtransitionIdを取得する方法は考えている。

編集:ワークフロープロセス定義のXMLで定義されているようtransitionIdは、実際に名前を移行され、それを考え出します:

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

また、あなたはパス(workflow.getPaths())を繰り返し処理できるワークフローからのタスクのリストを取得し、path.getTasks(とタスク経由します)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top