ウェブスクリプトを使用してのAlfrescoのワークフローを進めます
質問
私はの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(とタスク経由します)。