Java中的流程/工作流程

Jac*_*erk 5 java

我有一个我需要进行的具体项目,在我迈出第一步之前,我希望得到大师的一些指导.

我们有许多应用程序接收来自某些外部源(即文件,XML-RPC,Web服务等)的输入,然后以某种方式处理它,应用规则,与其他外部系统(可能)通信,访问一个数据库(可能),然后发回一个响应.我们维护同一应用程序的不同版本,以满足客户之间的所有细微差别.(是的,是的,我知道.这太糟糕了,这就是为什么我要解决它......)

我正在使用的想法是拥有一个基于组件的架构,其中不同的组件可以通过配置连接在一起,并且信息流通过业务规则来管理.实质上,它必须能够为每个客户端提供一组具有不同配置的程序副本.我甚至梦想着一个基于GUI的应用程序,其中系统可以以VB风格的拖放方式连接在一起.

现在,上面的声音肯定是以前做过的事情......而且我不想重新发明轮子.问题是上面必须能够处理大量的实时事务,所以我不确定像BPEL这样的东西是否是正确的选择.

在我去制造车轮之前的任何建议?

tuc*_*uxi 1

我会为您的应用程序编写一个非常简单的 XML 方言。将元素类型保持在最低限度,并使用class="my.class.name'属性在运行时构建正确的类实例。这使得很容易拥有具有 3 个实现的元素(例如 <source class="my.package.XmlRpc"><source class="my.package.LocalFile"><source class="my.package.WebService">)。每个元素类型一旦实例化,就应该读取其 XML 内容以查找正确配置自身所需的任何其他数据。

有很多易于使用的XML解析库(我推荐JDom),并且有很多用于XML查看和编辑的工具支持。XML 易于记录、使用和包装到 GUI 中。

因此:每个组件都有一个元素类型,并且它们特定的依赖于实现的配置被隐藏在元素内。如果您的接线很简单(特定的组件实例仅在一个地方使用),您就可以避免包含。如果您有复杂的连接(您需要在多个位置重用组件实例;例如,您想要重用过滤器或计算中间结果),请首先定义组件实例,然后根据对这些实例的引用构建连接实例。

我本质上是提倡像Ant构建文件这样的东西,并让事情尽可能简单。