4

我想使用 Grails Activiti 插件构建自己的工作流系统。执行此操作的程序是什么?谁能帮我吗?

我已经参考了这个文档并给出了一个例子

我已经在我的项目中安装了 Grails Activiti 插件。我还在我的项目中下载并安装了假期请求示例应用程序,并查看了它是如何工作的。

4

1 回答 1

3

现在,我认为没有分步说明可以指导您完成 Grails Activiti 插件的实现。我在一条类似的船上(一个使用 Grails 的开发商店,想要实现一个工作流引擎),到目前为止,Activiti 插件并没有真正有用。那些使用它的人实际上似乎并没有利用它在 GORM 和 Activiti 之间提供的集成

概括地说,这里是我推荐的在 Grails 中使用 Activiti 的步骤;您可能会接受或离开 Activiti 插件。

  1. 在您的数据库中创建 Activiti 引擎。如果您使用内存中的 H2 数据库并让 Grails 执行创建/删除语句,则可能需要将 h2 脚本添加到应用程序的启动过程中。
  2. 以 BPMN 2.0 XML 格式在 Grails 应用程序中映射您想要的流程。您可以使用Activiti Eclipse Designer,它可以很好地插入 GGTS,在某个地方启动 Activiti Explorer 并使用基于 Web 的设计器,或者您自己编写原始 XML。
  3. 将 Activiti 作为依赖项包含在 Grails 应用程序中。您可以通过在 BuildConfig.groovy 中包含 Activiti Grails 插件来实现这一点,或者仅将 Activiti 引擎 jar 作为依赖项包含在内(见下文)。
  4. 使用对Activiti 引擎 API 的调用(最好来自 Grails 服务)来部署您的流程模型,启动流程的各个实例,并在工作流程中移动各个步骤。
    • 您可能需要将有关 Grails 域对象的信息作为流程变量传递,然后稍后再将它们提取出来。弄清楚让 Grails 将数据保存在域对象中的哪个位置,以及让 Activiti 将其作为流程变量保存在何处,这只是开发人员需要考虑的问题。

一般来说,我的经验法则是让 Activiti 处理流程,而 Grails 处理其他所有事情(UI、数据持久性和操作、验证等)。

我推荐这种方法,这样您仍然可以使用 Grails 通过控制器和 GSP 管理所有用户界面,并通过域对象和服务管理大部分对象模型。Activiti 团队正在构建的 UI 没有任何问题,但它基于Vaadin,这是它自己的 Java/UI 框架,具有自己的特点和理念。我确信超级开发人员可以将它们无缝地结合起来,而且可能已经有了,但除非他/她下山教我,否则我将不得不限制我将尝试的工具的数量立即掌握。:)

如何将 Activiti 作为依赖项包含在内

在您的 BuildConfig.groovy 文件中,在您的依赖项和存储库闭包中包含以下内容:

repositories {
    inherits true // Whether to inherit repository definitions from plugins

    mavenRepo "https://maven.alfresco.com/nexus/content/groups/public/"
    //any other repositories you need go here, including grailsCentral(), etc.
}
dependencies {
    compile("org.activiti:activiti-engine:5.13"){
        excludes "spring-beans"
    }
}

您不必排除 spring-context 依赖项,但 Grails 2.3.1 确实使用了比 Activiti 5.13 更高版本的 Spring。在我试过的 2/3 机器上,没问题,Grails 只是使用 Spring 的较新版本,忽略了 Activiti 所需的旧版本。然而,在一台机器上,这种差异导致了一个难以追踪的棘手异常

于 2013-11-17T20:52:18.327 回答