2012-09-12 141 views
5

我有一个需要进行的具体项目,我希望在迈出第一步之前,向主人们提供一些指导。Java中的流程/工作流程

我们有许多应用程序接收来自外部来源(例如文件,XML-RPC,Web服务等)的输入,然后以某种方式处理它,对其应用规则,与其他外部系统通信可能),访问数据库(可能),然后发送回应。我们正在维护同一应用程序的不同版本,以迎合我们客户之间的所有小差异。 (是的,是的,我知道,这很糟糕,这就是为什么我想修复它...)

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

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

任何建议之前,我去做轮轮?

+2

看来您正在寻找一些ETL工具;搜索talend或apatar。 – SiB

回答

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构建文件,并尽可能保持简单。

+0

这就是我在想...并为类之间的输入/输出流添加注释。但是,我希望已经有一些经过尝试和测试的东西。 (但+1因为我真的真的很喜欢DIY这个,你确认了它:)) –

+1

如果你知道一点XML和反射,那么我可以保证这会比试图找到一个更快 - 适合所有的解决方案,并使其适应您的问题。 – tucuxi

+0

我对这两个都很熟悉......足够熟悉它的邪恶阴暗面。我可能会看到像Guice这样的东西来为我做对象创建而不是自省。 –