3

我正在考虑将 jBPM 与我当前的项目集成,到目前为止,仅包括我耳中的 jpdl jar 并使用 spring 模块 0.8 jbpm 模块,但是我必须有一个合理的方法来从我的更改到设计器中的流程定义到生产中的部署。

该路径必须在许多环境(开发、许多测试、登台和生产)中是可重复的,并且理想情况下应该在系统本身未运行时完成。

理想情况下,我会将整个定义打包为 SQL 脚本,但是我还没有看到任何工具可以将 processdefinition.xml 转换为 sql,并且手动组装它似乎过于繁琐且容易出错。

有没有其他人在这里有任何经验?

该系统在 websphere 6.1 上运行,我倾向于避免在迁移时执行 java 代码(运行 java 代码以生成可以在迁移期间使用的工件虽然可以)

4

3 回答 3

1

如果您想避免走下坡路.par,很容易编写一些简单的 Java 代码来将新的流程定义版本部署到您的数据库。就像是

JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml"));
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(newPdStream);
JbpmContext context = jbpmConfiguration.createJbpmContext();
context.getGraphSession().deployProcessDefinition(processDefinition);

您需要在类路径上有相关数据库的hibernate.propertiesor hibernate.cfg.xml

这种方式的好处是所有版本控制的东西都是自动为你完成的。我们曾经使用 hack 修改流程定义(基本上忽略版本控制),但对于当时处于活动状态的流程实例来说,这是一个巨大的混乱。

于 2008-11-13T12:43:20.737 回答
1

解决方法建议:部署和拦截 sql 查询

我还没有尝试过,但我建议尝试使用 jBPM-console deploy servlet 的部署或

context.getGraphSession().deployProcessDefinition(processDefinition);

正如 shyamsundar 所建议的那样

使用 LogDriver 记录 sql 更新:http: //rkbloom.net/logdriver/logdriver.tar.gz

于 2008-12-02T08:33:26.100 回答
0

为什么不专门使用 JBPM 提供的 ant 任务扩展DeployProcessTask。您可以部署到只有一个.par文件的不同环境,并且对应jbpm-cfg.xml于各种 dev/test/staging/prod 环境。您可能需要做的唯一更改是将您的休眠配置配置为直接连接到数据库而不是使用数据源。

于 2008-11-05T18:33:43.767 回答