2

プログラムでワークフローを開始したい。だからウェブスクリプトを書いた。

スクリプトの実行:

function startWorkflow()
{
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$alfGroupReview";
   workflow.parameters["bpm:workflowDescription"] = "Please review ";
   workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");;
   var futureDate = new Date();
   futureDate.setDate(futureDate.getDate() + 7);
   workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   workflow.execute(document);
   return ;
}

上記のスクリプトで、「ドキュメントが定義されていません」というエラーが発生します。https://forums.alfresco.com/en/viewtopic.php?f=34&t=42677およびhttp://livinginjava.blogspot.in/2008/10/starting-alfresco-workflow-using.htmlリンクを参照しています。

だから私は私のスクリプトを次のように更新します:

function startWorkflow()
{
var nodeRef = "workspace://SpacesStore/25285e6c-2995-49fe-aa50-1270cefc806a";
var docNode = search.findNode(nodeRef);
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$alfGroupReview";
   workflow.parameters["bpm:workflowDescription"] = "Please review ";
   workflow.parameters["bpm:groupAssignee"] = people.getGroup( "GROUP_aloha_collaborators");;
   var futureDate = new Date();
   futureDate.setDate(futureDate.getDate() + 7);
   workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   workflow.execute(docNode);
   return ;
}

ここで、nodeRef:はドキュメントライブラリからのドキュメントの参照です。

今、新しいエラーは:

500 Description:    An error inside the HTTP server which prevented it from fulfilling the request.

Message:    06270056 Wrapped Exception (with status template): 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null

Exception:  org.alfresco.scripts.ScriptException - 06270273 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/justransform/startWF.get.js': null

    org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:195)

前もって感謝します。

4

2 に答える 2

7

Alfresco ワークフロー API を使用します。注: wfDocs は、ドキュメント ノードの配列を保持します。

// 2 days from now
var dueDate2d = new Date((new Date()).getTime() + 2*(24*60*60*1000));

// Start workflow
var wfdef = workflow.getDefinitionByName("activiti$alfGroupReview");
if (wfdef) {
    var wfparams = new Array();
    wfparams["bpm:workflowDescription"] = "Please review";
    wfparams["bpm:groupAssignee"] = people.getGroup( "GROUP_site_collaborators");
    wfparams['bpm:workflowDueDate'] = dueDate2d;
    wfparams['bpm:workflowPriority'] = 1;
    wfparams['wf:notifyMe'] = true;

    var wfpackage = workflow.createPackage();
    for each (var n in wfDocs)
        wfpackage.addNode(n);  
    var wfpath = wfdef.startWorkflow(wfpackage, wfparams);
    var tasks = wfpath.getTasks();
    for each (task in tasks)
        task.endTask(null);
}
于 2012-10-23T14:04:17.627 に答える
5

このコードは、次の場合に正常に実行されます。

  • docNode がヌルではありません。これにはチェックを追加する必要があります。
  • あなたのグループは存在します。おそらくこれにチェックを追加する価値があります。
  • 指定された ID のワークフローが存在します。これを確認するには、ワークフロー コンソールを使用します。たとえば、指定した ID はすぐに使用できるワークフローではありません。カスタムの場合は、ワークフローが正常に展開されていないか、ID が正しくない可能性があります。

また、「workflow」という変数は使用しないでください。Alfresco では、「ワークフロー」と呼ばれるルート スコープのオブジェクトが既に定義されています。そういえば、ワークフロー JavaScript APIを使用して、アクションの代わりにワークフローを呼び出してください。ただし、どちらでも機能するはずです。

JavaScript コンソールと "activiti$activitiParallelGroupReview" のワークフロー ID を使用して (ワークフロー変数を workflowAct に変更した後) 、コードを正常に実行しました。

于 2012-07-27T16:25:29.613 に答える