Workflow: “A bunch of spoiled brats”

15 08 2008

I’m not a drooling rabid fan of JBoss’ jBPM workflow engine, but I do agree with many of the sentiments expressed by jBPM lead developer Tom Baeyens in “The State of Workflow,” on jboss.com.

If database systems are like a respected, wise man telling a clear story, then workflow must be a bunch of spoiled brats shouting their own truth at each other. …

[W]orkflow management systems are at the very initial phase of the technology hype curve. … One of the observations that form the basis of this statement is the overwhelming number of concepts used. None of the numerous specs and tools in this area is similar.

Baeyens explains in detail why the concept of “activities” should be discarded in favor of “states” and “actions.” Baeyens then:

Many vendors of workflow management systems will let you believe that with their graphical process designer it only takes a business analyst to create process definitions. This vision originates from the fact that programming is hard. …

I’d disagree with the assertion that “programming is hard.” Certainly it’s not easy, but it’s not as hard as developing and codifying the actual business procedures … finding that delicate balance between oversimplification and analyzing everything to death.

While not having to write code is a good thing, most vendors go overboard on this and don’t foresee a mechanism to integrate code into a process definition … Developing process definitions requires input from -and collaboration between- a business analyst and software developer. A good graphical process designer should support this collaboration.

Here I’d have to agree 2000 percent. A GUI workflow builder seems simple and “intuitive” at first glance. Just keep in mind that the actual workflow engine has no such sense of human intuition. It helps to be able to explain the fine details of complex processes in a language that the workflow engine speaks.





“Enterprise-grade” software

27 06 2008

Early in the evaluation process I found myself looking for a formal definition of “enterprise-grade” software.

Any number of Google searches brought up only terabytes of white papers, press releases, and other marketing materials promoting various “enterprise-grade” solutions. At last, in frustration, I searched for: “what the f*** is enterprise grade” … and hit paydirt.

Here’s one of the better explanations, courtesy of the P5EE Project:

Enterprise Systems are systems which have the attributes enumerated below.
When systems have these attributes, they are such that large enterprises can invest substantial corporate resources in them.

  • Availability – the assurance that a service/resource is always accessible
  • Scalability – the ability to support the required quality of service as the load increases
  • Reliability – the assurance of the integrity and consistency of the application and all of its transactions. The ability to provide a required reliability service level depends on the close coordination of the hardware, networking, operating system, storage subsystem, application framework, and application software.
  • Security – the ability to allow access to application functions and data to some users and deny them to others
  • Interoperability – the ability of the system to share data with external systems and interface to external systems.
  • Leveragability – the ability that stored data, programmed logic, and other system resources available anywhere in the enterprise should be accessible from everywhere in the enterprise
  • Maintainability – the ability to correct flaws in the existing functionality without impacting other components/systems
  • Extensibility – the ability to add/modify functionality without impacting existing functionality
  • Manageability – the ability to manage the system in order to ensure the continued health of a system with respect to scalability, reliability, availability, performance, and security.
  • Portability – the ability of the software to run on a variety of hardware and operating system configurations
  • Accessibility – the ability to access system functions through different user agents and in different human languages

Other attributes suggested have been:

  • Longevity – the assurance that the tools and technologies the system is built with will continue to work and be supported far into the future
  • Popularity/Buzz – the assurance that since other people are using the same technologies that (1) there will be a sufficient talent pool to maintain it, and (2) if there are problems, the manager who selected the technology won’t be hurt politically within his organization

And here’s a (mostly serious) summary courtesy of warpspire.com:

So let’s set this straight here. Enterprise Software is software running on an Enterprise Architecture which itself is defined as a software architecture exhibing attributes of an Enterprise System which is defined as Enterprise Software running on an Enterprise Platform which is simply a Enterprise Software exhibiting qualities of an Enterprise System.

So there we have it … “enterprise-grade” defined. Now we have some kind of standard by which to evaluate the “enterprise-ness” of candidate products. This should be interesting!








Follow

Get every new post delivered to your Inbox.