我正在考虑将jBPM与我当前的项目集成,到目前为止一直非常好,只需将jpdl jar包含在我耳中并使用弹簧模块0.8 jbpm模块,但是我必须有一个合理的方式从我的更改为设计器中的流程定义以在生产中部署。
路径必须在许多环境中可重复(开发,许多测试,升级,然后生成),理想情况下应该在系统本身未运行时完成。
我理想情况下将整个定义打包为一个SQL脚本,但是我还没有看到任何从processdefinition.xml转换为sql的工具,并且手动组装它们看起来过于繁琐且容易出错。
那里有没有其他人有过这方面的经历?
系统正在websphere 6.1上运行,我倾向于避免在迁移时执行java代码(运行java代码以生成可在迁移期间使用的工件即可)
答案 0 :(得分:1)
如果您想避免沿着.par
路线走下去,可以轻松编写一些简单的Java代码来将新的流程定义版本部署到您的数据库中。像
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml"));
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(newPdStream);
JbpmContext context = jbpmConfiguration.createJbpmContext();
context.getGraphSession().deployProcessDefinition(processDefinition);
您需要在类路径上为相关数据库提供hibernate.properties
或hibernate.cfg.xml
。
这种方式的优点在于所有版本控制内容都是自动完成的。我们曾经使用过修改流程定义的hack(基本上忽略了版本控制),但对于当时活跃的流程实例来说,这是一个非常大的混乱。
答案 1 :(得分:1)
解决方法建议: 部署和拦截SQL查询
我没试过,但我建议尝试使用jBPM-console部署servlet的部署或
context.getGraphSession().deployProcessDefinition(processDefinition);
由shyamsundar
建议AND
使用LogDriver记录sql更新:http://rkbloom.net/logdriver/logdriver.tar.gz
答案 2 :(得分:0)
为什么不专门使用JBPM提供的ant任务扩展DeployProcessTask
。您可以部署到仅具有单个.par
文件的不同环境以及用于各种dev / test / staging / prod环境的相应jbpm-cfg.xml
。您可能需要做的唯一更改是将hibernate配置配置为直接连接到数据库而不是使用数据源。