Flux 是一个使用 Java 编写的商业产品,提供了任务调度、文件传输以及工作流管理能力——它可以独立运行,也可以嵌入式软件组件方式在 Java、J2EE 和 Web Services 环境下运行。与 Quartz 以及其他完成类似功能的开源框架相比,Flux 不仅可由开发者使用,还能让不懂技术的用户使用——他们可以通过 Web 或者桌面界面的方式设计工作流或者通过操作控制台(Operations Console)监视工作流执行情况。Flux 通过使用触发器(triggers)、动作(actions)、流程(flows )来提供非常灵活的流程处理设置,而它们又可以组合起来以创建更复杂的流程图:
- 动作(action)执行一些功能,如开始一批任务、传输一个文件、更新数据库或者调用 J2EE 应用。当准备执行任务时,Flux 通过调用用户定义的回调来与 Java 集成,并且在 J2EE 环境下可以调用 session、消息驱动 beans(message-driven beans)以及发送 JMS 消息。
- 触发器(trigger)可以触发一次、多次或者根据事件驱动来触发。Flux 提供了一个预先定义好的触发器和动作套件,但是自定义的套件也可以被构建并集成到流程图中。
- 流程(flow)可以将触发器或动作彼此连接起来。一旦触发器被触发,流程会指引一个恰当的动作来执行。该执行既可以是无条件的(例如:当一个邮件触发器被触发时,执行就会无条件地转到数据库动作中)也可以是有条件的(例如:根据邮件的发送者不同,执行会进入不同的动作分支中)。
我们可以通过 Flux APIs 以编程的方式来建立流程图,也可以通过 Web 设计器以图形化的方式来建立流程图,在之前的版本中已经存在 Web 设计器了,相对于已有的桌面设计器(用 Swing 构建的),它是我们的另一种选择。尽管 Flux 主要面向 Java 环境,但是它也可以调用和监控其他语言编写的批处理和可执行代码,这是通过 Flux Agents 实现的,它支持在远程机器上执行脚本。
在Flux7.7 中 ,Web 设计器已经得到了增强,可以建立与不同方式的文件传输相关的动作和触发器。在已有的使用SFTP 主机的基于密码认证的基础上,又增加了基于证书的认证,以确保B2B 文件传输的安全。Web 设计器的另一个新特性是运行时的数据映射,它可以让开发者在一个任务和工作流中进行actions 间的数据移动。
在与InfoQ 的讨论中,Flux 的主席David Sims 谈到“要使得Web 设计器达到桌面设计器的水准,还需要大约6 个月的工作量”——他们之间的差别主要在于消息,信号和业务日历。另一个可嵌入到Web 应用中的组件——操作控制台——在7.7 中已经得到了改进:其可伸缩性更强,现在它可以监控数以千计的任务和流程图。
Sims 谈到了 Web 设计器和操作控制台作为嵌入式组件的一个常见的场景:
典型地,在金融机构、金融软件公司或者其他企业中的 Java 开发团队对其应用进行扩建并在其应用中嵌入 Flux 任务、工作流和文件传输能力。然后该企业部署其应用,而 IT 职员的任务就是监控、控制和使用该应用。这就是操作控制台的用武之地了。企业的 IT 职员可以使用它来控制任务、工作流以及文件传输,这些都是企业应用的一个内在部分。
作为一个简单的例子,考虑如下情况:某企业使用 Flux 引擎作为核心构建了一个基金账户管理软件。他们的 Java 应用需要初始化、跟踪以及管理基金和账户,但是 IT 职员需要从他们的角度做一些管理工作。IT 职员需要使用 Flux 操作控制台对系统进行实时调整。
Flux7.7 是完全兼容于之前的版本的,并且它不需要对数据库 schema 做任何改变,在这里数据库是可选的,它可用来对任务 / 工作流,定义和运行时任务执行信息进行持久化。Sims 还与我们分享了 Flux 的一些技术细节以及新的 web 组件:
我们已经使用了相当多的 JavaScript 库和技术(GWT、Dojo、Prototype+Scriptaculous 等等),并且我们正在利用支持的 ExtJS 部件(widgets)向 RESTful 架构进行迁移。通过在浏览器中使用 XPath 直接读取大容量(5MB)的 XML 工作流,我们已经提高了可伸缩性。这大大降低了浏览器与服务器之间的 Ajax 通信,因为浏览器完全可以操纵工作流 XML,当所有修改完成后,它再将结果发送到服务器端。与更多地使用 Ajax 请求以在服务器端执行任务的情况相比,这种方式要快 90% 以上。
与 David Sims 的交谈以他给出的 Flux 下一个版本的路线图作为结束:
在今年 5/6 月份,Flux8.0 将会发布。Flux 的 API 也将由从 2000 年开始一直采用的工厂设计模式转为 POJO 模型。POJO 模型使得 Flux 可以更容易地集成到其他框架中,最明显的就是 Spring。在 Flux8.0 中,将会有更多的针对 Flux 引擎的 JavaScript 部件、BPM dashboard、流程图(任务 / 工作流 / 业务流程)、执行流程图、日志、审计、仓库、代理以及用户管理,用来查询和更新数据库表的新的数据库触发器和动作。
从 HSQL 升级到 Derby。更新到 Java 5,尤其是利用泛型来更好地注解使用集合的 Flux APIs。根据用户的反馈有可能增加 Flux REST API。一般来说,我们每隔四个月就会发布一个新的 Flux 版本。
在 Flux 的网站以及产品手册上有关于Flux 的更多信息。
查看英文原文: Flux 7.7: Increased Monitoring and Secure FTP Capabilities - - - - - -
译者简介:张龙,同济大学软件工程硕士,现就职于理光软件研究所。主要从事文档工作流和办公自动化解决方案的研发工作。热衷于 Java 轻量级框架的研究,对敏捷方法很感兴趣。曾有若干年的 J2EE 培训讲师经历。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com 。
评论