Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Alfresco Activiti脚本任务侦听器当前脚本节点?_Javascript_Alfresco_Activiti - Fatal编程技术网

Javascript Alfresco Activiti脚本任务侦听器当前脚本节点?

Javascript Alfresco Activiti脚本任务侦听器当前脚本节点?,javascript,alfresco,activiti,Javascript,Alfresco,Activiti,是否有方法获取在Alfresco的Activiti工作流中启动状态的ScriptNode?我的工作流中有一个ScriptTask,它为开始事件设置了一个Alfresco脚本侦听器。调用脚本时,我希望在工作流中转换为ScriptTask的ScriptNode作为参数传递给定义为侦听器的函数。可能吗 为清晰起见进行编辑: 下面是带有Activiti插件的Eclispe的屏幕截图。 此工作流由另一个使用WebScript的工作流启动 var props = new Object(); var dd

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

为清晰起见进行编辑: 下面是带有Activiti插件的Eclispe的屏幕截图。

此工作流由另一个使用WebScript的工作流启动

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();
        // ????
}
函数artPDFRename()
{
logger.log(“====================================================”);
logger.log(“artPDFRename”);
var workflowDef=workflow.getDefinitionByName(EL_workflow);
var activeInstance=workflowDef.getActiveInstances();
// ????
}
目标是使此处理自动进行。我们试图在设计时尽可能少地进行手动干预,并且不将任务分配给用户执行。是的,可能还有另一种重命名PDF文件的方法,但我似乎无法从这里列出的文档中找到如何获取指向我放入bpm_包对象中的节点的指针。这就是问题所在


或者说,我对我们如何开发这一功能的认识太过偏离了,以至于毫无意义?

作为一个例子,请查看
ScriptTaskListener
类。在这里,所有工作流变量都放在一个映射中

下面的代码很有趣:

//将所有工作流变量添加到模型中 映射变量=delegateTask.getExecution().getVariables()

for(Entry varEntry:variables.entrySet())
{
scriptModel.put(varEntry.getKey(),varEntry.getValue());
}
因此,您可以使用bpm_包作为工作流脚本任务中脚本中的对象

因此,如果您需要工作流已在其上运行的节点,则应使用以下代码(其中task是侦听器的notify方法中的delegateTask):

delegateTask.getVariable(“bpm_包”);
//或者像上面的例子
delegateTask.getExecution().getVariable(“bpm_包”)

这将是一个列表,以第一个为例,这将是您的节点

---------更新

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

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

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


你的最后一行很难理解。请用一些代码示例来解释你的意思,以便人们能够理解。我不确定,但可能是这样的情况,你还没有对你的问题进行评论/回答。我有一个户外脚本监听器,负责活动任务(比如接收任务)。当ScriptNode在工作流中移动并到达该任务时,将调用该脚本。我只想获取触发要调用脚本的ScriptNode。ScriptNode在工作流中移动,您的意思是bpm_包正确吗?因此,当您执行工作流操作时,您希望该节点正确吗?然后您需要获取第一个脚本不是bpm_包(关联)中的子对象。或者这不是你的意思吗?是的。工作流包,我们将其用作工作流计算中使用的元数据的容器。我看不出如何从“工作流”中获取该对象WorkflowManager对象。抱歉,我应该指定我正在尝试通过web脚本执行此操作。我将查看这是否转换为工作流对象中的可用方法。?我现在完全困惑。任务如何到达web脚本。我还没有看到用于此操作的标记/侦听器/方法。我认为您需要在此处完全公开代码/步骤Thewise你不会真正得到帮助。更新了更多信息。谢谢。bpm_包对象,这正是我所需要的。在任何地方的文档中都没有看到,也不知道它的存在。谢谢。它是;)在Alfresco的Wiki上:
    for (Entry<String, Object> varEntry : variables.entrySet())
    {
        scriptModel.put(varEntry.getKey(), varEntry.getValue());
    }