Rustan Leino and Mike Barnett on Spec#
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
- .NET,
Tracking change and innovation in the enterprise software development community
Posted by Alexander Olaru on Mar 03, 2008 11:00 AM
Flux is a commercial product written in Java that offers job scheduling, file transfer and workflow management capabilities - it can be used either as a standalone application or as an embeddable software component in Java, J2EE and Web Services environments. Compared with Quartz and other open-source frameworks that perform similar functions, Flux can be used not only by developers but also by non-technical users who can design work flows through a Web or Desktop Interface or monitor job flow execution through an Operations Console.
Flux can accommodate the setup of very flexible processing flows through the usage of triggers, actions and flows which can be combined to create arbitrarily complex flow charts:
Flow charts can be setup either programmatically through the Flux APIs or graphically through the Web Designer which has been introduced in the prior release as an alternative to the already existing Desktop Designer (built in Swing). Although targeting primarily Java environments, batch processes and executables written in other languages can also be invoked and monitored from Flux through the use of Flux Agents which allow execution of scripts on remote machines.
With the new 7.7 release the Web Designer has been enhanced to allow the setup of actions and triggers related to the various flavors of supported file transfers. Certificate-based authentication has been added as an alternative to password authentication with SFTP hosts to ensure security of B2B file transfers. Another new feature added to the Web Designer is the runtime data mapping which allows developers to move data between actions in a job and workflow.
In a discussion with InfoQ, the President of Flux, David Sims mentioned that "there is about six more months of development work left to bring the Web Designer up to par with the desktop implementation" - the differences are related mainly to messaging, signals and business calendars. The other component embeddable in Web applications - the Operations Console - has been improved in the 7.7 release to make it more scalable: thousands of jobs and chart flows can now be monitored from it.

Sims talked about a common scenario when the Web Designer and Operations Console can be used as embeddable components:
Typically, a Java development team at a financial institution, a financial software company, or some other enterprise (the "Enterprise", let's call them) builds out their application and embeds Flux jobs, workflows, and file transfer capabilities in their application. Then that Enterprise deploys their application, and their IT staff is tasked with monitoring, controlling, and generally using their application.
That's where the Operations Console comes on. The Enterprise's IT operations staff can use it to control jobs, workflows, and file transfers that are an inherent part of the Enterprise's application.
As a simple example, consider the case where the Enterprise builds a funds and account management software application with a Flux engine at the core. Their Java application will be initiating, tracking, and generally managing funds and accounts, but sometimes the IT operations staff will need to step in to do some managing on their side. The IT staff would use the Flux Operations Console, in this case, to make real-time tweaks to their system.
The 7.7 release is fully compatible with the prior release and it did not require any schema changes to the database that can optionally be used for persisting job/workflow definitions and runtime job execution information. Sims also shared some details about the technologies introduced in Flux with the addition of the new web components:
We have used a variety of JavaScript libraries and technologies (GWT, Dojo, Prototype+Scriptaculous, etc.) and are in the process of migrating towards a RESTful architecture with supporting ExtJS widgets.
We have increased scalability by using XPath to read large (5MB) XML workflows directly in the browser. This reduces a lot of round-trip Ajax communications between the browser and server as the browser can simply manipulate the workflow XML and send the result to the server when all modifications have been made. This has allowed us to deliver an interface that is over 90% faster than comparable interfaces that use more Ajax requests to perform work on the server-side.
The conversation with David Sims concluded with him presenting the road map for the next Flux release:
In May/June of this year, Flux 8.0 will be released. Flux's API will change to a POJO model to replace the original factory design pattern that it has had since 2000. A POJO model will make it easier to integrate Flux into other frameworks, most notably Spring.
Also in Flux 8.0, there will be more JavaScript widgets for Flux engines, the BPM dashboard, flow charts (jobs/workflows/business processes), executing flow charts, logs, audit trail, repository, agents, and user management. New database triggers and actions for querying and updating database tables.
Upgrade from HSQL to Derby. Upgrade to Java 5, especially to make use of generics to better document Flux APIs that use collections. Possible Flux REST API if warranted by customer feedback. Generally speaking, we're releasing new Flux versions about every four months now.
More information about Flux can be found on its website and the product manual.
Introducing application infrastructure virtualization and WebSphere Virtual Enterprise
Hibernate without Database Bottlenecks
Memory Analysis Best Practices Within Eclipse
Rainmaking - IBM's software virtualization strategy (Jerry Cuomo CTO blog)
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
Henrik Kniberg talks about 10 possible reasons to fail while doing Scrum and XP. Maybe the team does not have a definition of what Done means to them, or they don't know what their velocity is.
This article outlines 9 principles Marc Lammers discovered while building the world’s best field hockey team, mapping them to software development practices.
Michael Poulin explains the necessity for SOA governance to ensure an Enterprise SOA's success, relying on concepts from the OASIS SOA Reference Model and Reference Architecture.
This article covers setting up a RichFaces portlet using JBoss Portlet Container and JBoss Portlet Bridge, deploying a RichFaces portlet, and RichFaces capabilities.
This article discusses scalability worst pratices including The Golden Hammer, Resource Abuse, Big Ball of Mud, Dependency Management, Timeouts, Hero Pattern, Not Automating, and Monitoring.
Obie Fernandez shares his experience selling consulting services for both Thoughtworks and Hashrocket and give tips how Ruby developers can work with clients.
Jeffries and Hendrickson derive Agile practices from the natural laws of software development. They don't just say "Be Agile!", but they explain why Agile practices make perfect sense.
No comments
Reply