标签: activiti

如何将候选用户列表传递给alfresco中的activiti工作流程任务?

我希望能够将用户列表作为任务的候选者传递.用户从数据列表中检索,不作为组提供.Activiti:candidateUsers似乎是正确的方法.

假设已经在变量ipw_reviwers中获取并设置了用户.

<serviceTask id="alfrescoScripttask1" name="Alfresco Script Task" activiti:class="org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate">
  <extensionElements>
    <activiti:field name="script">
      <activiti:string>logger.log("IPW - setup task");
      execution.setVariable('ipw_reviwers', "tom, dick, harry");</activiti:string>
    </activiti:field>
  </extensionElements>
</serviceTask>
Run Code Online (Sandbox Code Playgroud)

以下使用变量ipw_reviewers

<userTask id="adhocTask" name="Adhoc Task" activiti:candidateUsers="${ipw_reviewers}" activiti:formKey="wf:activitiReviewTask">
  <extensionElements>
    <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
      <activiti:field name="script">
        <activiti:string>logger.log("IPW - create task");
        if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate);
                  if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string>
      </activiti:field>
    </activiti:taskListener>
  </extensionElements>
</userTask>
Run Code Online (Sandbox Code Playgroud)

没有人能够看到或宣称这项任务.如果列表中只有一个用户,则该用户可以声明该任务.

如果activiti:candidateUsers被声明为

activiti:candidateUsers="tom, dick, harry"
Run Code Online (Sandbox Code Playgroud)

然后所有三个用户都能够声明任务.

可以在用户的​​列表被传递到Activiti的:candidateUsers在一个变量或应采用不同的方法来使用?

workflow alfresco activiti

8
推荐指数
1
解决办法
1万
查看次数

将新工作流添加到Alfresco共享中

我是Alfresco/Activiti的新手.

我们公司正在使用Skelta BPM.NET(与我们自己开发的RMS集成),现在我们想了解其他BPM软件.

我最后几天发现了如何使用Eclipse创建新的工作流程并将它们导入到Activiti的独立安装中.

现在我想将此工作流程发布到Alfresco共享中.有没有简单的方法呢?我一整天都在Google上搜索,但没有找到任何有用的东西.

关于安装的另一个问题:是否可以在同一个tomcat上安装Activiti及其所有的webapps,alfresco正在运行?Apache Ant只能构建独立安装.这两个应用程序可以合并吗?

感谢您的信息,Anze

workflow alfresco bpmn activiti

7
推荐指数
1
解决办法
1万
查看次数

动态设置用户任务受理人

我必须在activiti中创建进程,这需要以下用例.

1.表单有一个人物搜索字段2.当有人完成表单并使用填充了名称的人员搜索字段完成任务时,我需要将下一个分配了名称/名称的任务设置为可以对其执行操作的用户下一个任务.

我怎样才能实现使用activiti引擎apis.

对此有任何帮助表示赞赏.

提前致谢.

activiti

7
推荐指数
1
解决办法
9684
查看次数

Alfresco Activiti - 创建同一子流程的多个实例

对于一个我开始质疑甚至可能的过程来说,这似乎是一个相当简单的要求.

下图显示了我当前的流程.我想要实现两件事:

  1. 用户创建用于添加注释的初始用户任务,他们应该能够根据需要添加任意数量的注释,每个注释一个用户任务

  2. 为用户创建的每个新笔记(用户任务)生成一个新的子流程.

示例过程

上述过程存在以下问题:

  • 应该为每个任务生成一个子流程,但它们似乎互相覆盖

  • 我不确定子流程是否需要为每个生成的新子流程提供唯一的ID

groovy alfresco bpmn activiti alfresco-enterprise

7
推荐指数
1
解决办法
801
查看次数

如何扩展BPMN 2.0

目前,我正在研究扩展BPMN的方法.我想创建一个新任务类型,其属性少于任务,还有一些非BPMN属性和一种新类型的池.

到目前为止,我看到人们提到了两种方式,使用扩展点和使用外部模式.不幸的是,在互联网上,我找不到很多资源来广泛理解这些方法.

我从这些方法中理解了什么:

  • 扩展点: BPMN引擎供应商提供了一些标准扩展点(Aktiviti,jBPM等).例如在Activiti中有一个自定义服务任务,可以使用用户期望的属性进行扩展,但是如果可以在Aktiviti工作流引擎上部署这个新创建的扩展任务,我找不到任何资源,并且看到新的BPMN也会很高兴此扩展的架构.

  • 使用外部模式:在外部模式中定义所需的属性,并从Semantic.xsd引用此模式.在这种情况下,我们还需要调整我们的工作流引擎,但它比我之前提到的方法更灵活,或者我错过了什么?

唯一不明确的是这个方法不直接扩展任务定义,所以这些属性可以被BPMN中的每个元素使用?

示例外部模式是:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
    xmlns="http://myproject.org//bpmn/extensions/NEWTask"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
    xmlns:exvar="http://myproject.org/externalDefs"
    targetNamespace="http://myproject.org//bpmn/extensions/NEWTask"
    > 
    <xsd:import namespace="http://www.omg.org/spec/BPMN/20100524/MODEL"             schemaLocation="BPMN20.xsd"/>
    <xsd:import schemaLocation="externalDefs.xsd" namespace="http://myproject.org/externalDefs" />
    <xsd:complexType name="tProperty1" abstract="false">
        <xsd:sequence>
            <xsd:any namespace="##any" processContents="lax" minOccurs="0" />
        </xsd:sequence>
    </xsd:complexType>
        <xsd:group id="tNEWTask" name="tNEWTask">
        <xsd:sequence>
            <xsd:element name="Property2" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Property1" type="tProperty1" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Property2" type="exvar:Varaible1" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:group>
    </xsd:schema>
Run Code Online (Sandbox Code Playgroud)

是否有任何其他方法可以扩展BPMN或您可以指向我的任何资源,以便我可以更好地了解此主题?

任何帮助将不胜感激,提前感谢!

business-process-management bpmn activiti

6
推荐指数
1
解决办法
5208
查看次数

如何重用Activiti中的现有用户/组数据?

我有一个webapp,它具有用户/组功能,以及现有的用户/组数据.

我想使用Activiti流程引擎,但似乎Activiti管理用户/组信息本身.

我是不是该:

  1. 重构我现有的webapp,重用Activiti中的用户/组数据,或
  2. 编写一些适配器代码,使Activiti在现有数据库中重用用户/组数据?也许,另一个implmentation RepositoryService,IdentityService等等,并重新编译?似乎RepositionServiceImpl在Activiti来源中硬编码,并且没有setRepositionService()方法ProcessEngine.

我无法重命名现有的db表,因为还有一些其他应用程序使用它们.

我已阅读用户指南,但我没有找到有关如何将Activiti与现有应用程序集成的任何信息.

integration activiti

6
推荐指数
1
解决办法
3058
查看次数

"工作流引擎"和"业务流程管理引擎"有什么区别?

很多时候我都听说过这两个概念.

如"windows工作流基础"和Activiti和jBPM等项目是"业务流程管理引擎".

这两个名词("工作流引擎"和"业务流程管理引擎")是一回事吗?

workflow business-logic jbpm activiti

6
推荐指数
1
解决办法
2787
查看次数

将Activiti任务从旧进程迁移到新进程

我有一个针对某些业务流程的Activiti项目.

问题在于迁移.现有流程有一些未完成的任务.我想通过添加新步骤来修改现有流程.

现在,当我创建一个新任务时,将根据更新的过程处理这个新任务.未完成的任务将根据旧流程进行处理.

我们来看以下示例:https://spring.io/blog/2015/03/08/getting-started-with-activiti-and-spring-boot

在此示例中,请考虑以下行:

taskVariables.put("telephoneInterviewOutcome", true);
Run Code Online (Sandbox Code Playgroud)

假设我有一些业务逻辑代码,我检查这个变量的值,如:

if (taskVariables.get("telephoneInterviewOutcome") == true) {...}
Run Code Online (Sandbox Code Playgroud)

现在假设,我想将此变量从Boolean修改为Enum.现在,我还需要更新我的业务逻辑:

if (taskVariables.get("telephoneInterviewOutcome") == SOMEENUM) {...}
Run Code Online (Sandbox Code Playgroud)

现在,我的业务逻辑代码需要根据手头任务的进程版本进行分支.如果任务属于进程的版本1,那么我将使用第一个语句,否则第二个类似于:

if (getProcessVersion(task) == 1) {
    if (taskVariables.get("telephoneInterviewOutcome") == true) {...}
} else {
    if (taskVariables.get("telephoneInterviewOutcome") == SOMEENUM) {...}
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于业务逻辑代码将随着流程的更新而增长.这会在生产过程中造成很多错误.

这个问题还有其他解决办法吗?如何在不更改业务逻辑代码的情况下解决此问题?

java workflow business-process-management bpmn activiti

6
推荐指数
2
解决办法
1767
查看次数

Spring State Machine的替代品

我使用Spring状态机和一些基本的Spring MVC应用程序.我必须承认,配置和使用非常简单.

但它也有许多局限性,主要是因为它处于发展的早期阶段.

我还遇到了一些像Activiti这样的工作流引擎,它是一个用Java编写的开源工作流引擎和一个轻量级Java状态机stateless4j.它们看起来更加精致和精致.

我想知道这些和Spring State Machine之间有什么区别(优点或缺点).

java spring state-machine activiti spring-statemachine

6
推荐指数
1
解决办法
3969
查看次数

如何合并来自 Activiti 中并行流的变量?

目前我有一个使用 fork/join 机制来创建并行流的子流程。以免假设有两个流:A, B。每个流都将复杂对象CONTEXT作为输入变量。此外,每个流程都会进行一些计算并更新内部的CONTEXT。作为输出,每个流都返回更新的CONTEXT。这里的问题是在加入点,CONTEXT 的最后一个结果覆盖了前一个。让我们假设流程A填充首先以结果CONTEXT_1完成,流程B将返回CONTEXT_2。所以最终结果将是CONTEXT_2并且流A 的所有更改都将丢失。

这里的问题是 - 如何合并两个流的结果? 在此处输入图片说明

更新: 根据我的观察,从 SuperProcess 到 SubProcess 的传递变量 (CONTEXT) 被复制 (CONTEXT'),并且在 subProcess 完成后,传递变量 (CONTEXT') 的新值将取代原始 (CONTEXT)。

在下面的示例中,我的意思是所有传递的变量都具有相同的名称。

例子:

  1. SuperProcess P1(变量:CONTEXT)调用SubProcess P2(变量通过拷贝传递);
  2. SubProcess P2 (Variable: CONTEXT' ) 创建两个并行流(Tasks)A , B(变量通过副本传递);

  3. 一个任务(变量:CONTEXT_1)更新变量的值,完成执行并返回变量;

    3.1. CONTEXT_1代替了变量CONTEXT',因此P2只能看到这个新值,因为该变量的名称相同;

  4. 同时B任务(变量: …

alfresco bpmn activiti

6
推荐指数
1
解决办法
906
查看次数