0

有没有办法在 Alfresco 的 Activiti 工作流中获取启动状态的 ScriptNode?我的工作流程中有一个 ScriptTask,它为 Start 事件设置了一个 Alfresco Script Listener。调用脚本时,我希望将在工作流中转换为 ScriptTask 的 ScriptNode 作为参数传递给定义为侦听器的函数。那可能吗?

为清楚起见进行编辑:这是带有 Activiti 插件的 Eclispe 的屏幕截图。 http://i.imgur.com/DAKtq.jpg

此工作流由另一个带有 webscripts 的工作流启动。

var props = new Object();
var dd = new Date();
props[EL_PROP_WORK_UNIT_NAME] = "testNode" + DateISOString( dd );
props[EL_PROP_WORK_UNIT_SOURCE_CODE] = "ROB";
props[EL_PROP_WORK_UNIT_DELIVERY_DATE] = dd;

node = getHome().createNode(name, EL_TYPE_WORK_UNIT, props);

var EL_WORKFLOW = "activiti$The-workflow";
var activeWfs = node.activeWorkflows;
if( activeWfs === null || activeWfs.length === 0 )
{
    var workflowPackage = workflow.createPackage();
    workflowPackage.addNode( node );
    var workflowDef = workflow.getDefinitionByName(EL_WORKFLOW);
    var workflowPath = workflowDef.startWorkflow( workflowPackage, new Object());
}

所以监听器调用另一个javascript方法......

function artPDFRename()
{
    logger.log("==============================");
    logger.log("<START> artPDFRename");

    var workflowDef = workflow.getDefinitionByName(EL_WORKFLOW);
    var activeInstance = workflowDef.getActiveInstances();
        // ????
}

目标是让这种处理是自动的。我们正在尝试以尽可能少的人工干预来设计它,并且不会将任务分配给用户执行。是的,可能还有另一种重命名 PDF 文件的方法,但我似乎无法从此处列出的文档中弄清楚如何获取指向我放入 bpm_package 对象中的节点的指针。这就是问题所在。

还是我离我们如何开发这个的基础太远了,这没有意义?

4

1 回答 1

1

例如检查ScriptTaskListener类。在这里,所有工作流变量都放在一个地图中。

下面的代码很有趣:

// 将所有工作流变量添加到模型 Map variables = delegateTask.getExecution().getVariables();

    for (Entry<String, Object> varEntry : variables.entrySet())
    {
        scriptModel.put(varEntry.getKey(), varEntry.getValue());
    }

因此,您可以使用 bpm_package 作为工作流脚本任务中脚本中的对象。

因此,如果您需要在工作流上运行的节点,则以下代码应该可以工作(其中任务是来自侦听器的通知方法的委托任务:

delegateTask.getVariable("bpm_package");
// 或者像上面的例子一样
delegateTask.getExecution().getVariable("bpm_package");

这将是一个列表,因此请选择第一个,这将是您的节点。

- - - - -更新

如果您使用的是 alfresco 的 javascript,那么您可以直接使用父对象 bpm_package。

因此,在您的情况下,最好执行以下操作:

var node = bpm_package.children[0]; //或者您可以检查包是否为空
// 然后将节点发送到您的
artPDFRename(node); //或者你可以在你的js文件中添加bpm_package代码

于 2013-01-02T16:18:20.760 回答