Planet BPM

January 26, 2012

Drools & JBPM: Wumpus World Update

I made further progress with Wumpus World today, as previously blogged here. The project is checked into drools-examples, execute "WumpusWorldServer" to run.
-larger sensor icons
-bump and scream sensors added
-left, right buttons now rotate left and rotate right.
-hero faces direction based on rotation
-can now shoot arrows
-wumpus can die

by Mark Proctor (noreply@blogger.com) at January 26, 2012 10:15 PM

January 25, 2012

Tom Debevoise: My predictions for 2012 for Process Modeling and BPM in General

On our Bosch Software Innovations blog, I have posted some observations concerning BPM/Business Rules Management or IBPM (intelligent BPM) and continued predictive conditions for 2012.

As we enter the 5th year following the real-estate crisis of 2008, we still face hard efficiencies and economic realities both in the EU and the US. Process and Rules Methods and technologies will play a role but probably not the way you think.

The post is here:

http://blog.bosch-si.com/10-predictions-for-information-and-operational-technology/

by Tom Debevoise at January 25, 2012 07:02 PM

Sandy Kemsley: Upcoming Webinars with Progress Software

TweetBlogging around here has been sporadic, to say the least. I have several half-finished posts about product reviews and some good BPM books that I’ve been reading, but I have that “problem” that...

[Content summary only, click through for full article and links]

by Sandy Kemsley at January 25, 2012 01:17 PM

Drools & JBPM: Wumpus World

I've just committed a working version of Wumpus World, an AI example covered in in the book "Artificial Intelligence : A Modern Approach". It's not complete yet, as I still need to add the ability to shoot arrows and to clumb out of the cave. But the rest of it is there and working.

When the game first starst all the cells are greyed out. As you walk around they become visible. The cave has pitts, a wumpus and gold. When you are next to a pittt you will feel a breeze, when you are next to the wumpus you will smell a stench and see glitter when next to gold. The sensor icons are shown above the move buttons. If you walk into a pitt or the wumpus, you die.

Here are the slides that I used in my presentation for Wumpus World, along with a demo, at Judcon India 2012. The code will be part of 5.4 beta 2 going out today/tomorrow.

A more detailed overview of Wumpus World can be found here.










asdf

by Mark Proctor (noreply@blogger.com) at January 25, 2012 08:28 AM

January 24, 2012

BPM-Guide.de: camunda in 2011… und 2012

camunda bei der Neujahrsfeier 2012

camunda bei der Neujahrsfeier 2012

2012 ist schon nicht mehr ganz so jung – aber für alle, die sich für camunda generell interessieren, kommen jetzt ein paar Status-Infos zum Stand unserer Unternehmensentwicklung:

In 2011 haben wir erstmalig mehr als eine Million EUR Umsatz erzielt (sogar deutlich mehr). Das macht uns natürlich stolz, zumal wir nicht einfach “irgendeine Unternehmensberatung” oder “irgendein IT-Dienstleister” sind, und ständig “irgendwelche Consultants” in Projekte stecken, nur um kräftig Tage zu fakturieren. Stattdessen fokussieren wir uns nach wie vor zu 100% auf BPM, und treten viel mehr als “Enabler”, also “Befähiger” unserer Kunden auf, denn wir geben konzentriertes Know-how zu einem abgrenzbaren Themenkomplex weiter. Dementsprechend kurz sind in der Regel auch unsere Einsätze, und dementsprechend breit ist unsere Kundenbasis: Insgesamt haben 254 unterschiedliche Unternehmen und Behörden in 2011 unsere Leistungen in Anspruch genommen, wovon 48 Neukunden waren.

Aber natürlich gab es auch Projekteinsätze, die wir vor allem deshalb durchführten, weil wir bei spannenden und innovativen BPM-Projekten gerne am Ball bleiben und daraus wiederum Know-how für unser “Premium Consulting” ziehen. Zugenommen haben in 2011 auch die “begleitenden Coachings” auf Basis eines punktuell abrufbaren Kontingentes, wie es zum Beispiel Energie Südbayern für die Einführung von BPMN in Anspruch genommen hat (siehe Praxisbericht).

Neben den Themen BPM im Allgemeinen und BPMN im Besonderen hat in 2011 auch ganz klar das Thema Activiti zugenommen: Deutlich mehr als die Hälfte unserer Einsätze im Premium Consulting und der Projektarbeit bezogen sich auf diese ja noch vergleichsweise junge Open Source BPM-Lösung. Wir merken also sehr deutlich, dass Activiti in der Praxis angekommen ist und im Grunde einen ähnlichen “Siegeszug” erlebt wie die BPMN – wenn auch im kleineren Maßstab. Besonders spannend ist für unsere Consultants auch der Einsatz im Ausland, der dank Activiti in 2011 bereits spürbar zugenommen hat (innerhalb Europas, aber auch weltweit).

Da der Einsatz von Open Source beim Kunden natürlich einige Fragen aufwirft (Support, Stabilisierung, aber auch fehlende Features) ist es kein Wunder, dass wir diese Fragen zunächst punktuell, inzwischen aber auch in einer vollständigen Lösung beantwortet haben: camunda fox wurde geboren. Wer sich für die Aktivitäten von camunda in 2012 interessiert, findet hier auch bereits die primäre Antwort ;-) .

Mit dem Auftragseingang ist natürlich auch unsere Mannschaft gewachsen, die inzwischen 16 Köpfe zählt und Anfang Januar ihre traditionelle Neujahrsfeier zelebrierte (siehe Foto, wenngleich vier Kollegen leider nicht dabei sein konnten). Wir sind also – ganz bewusst – nach wie vor ein überschaubares Team, und ich denke in mancherlei Hinsicht auch ein einzigartiges: Hervorragend in unserer Kernkompetenz BPM, sind wir gleichzeitig unseren Werten verbunden. Viele der scheinbaren Sachzwänge der traditionellen Geschäftswelt werden von uns schlicht und egreifend ignoriert, und wir sind nicht trotzdem, sondern gerade deshalb erfolgreich.

Wer also BPM liebt und gleichzeitig den Mut hat, neue Wege zu gehen, damit eine Organisation besser funktioniert, den laden wir herzlich ein, uns auch in 2012 zu begleiten: Als Kunde, Partner oder Mitarbeiter. Gemeinsam werden wir eine Menge bewegen :-)

by Jakob Freund at January 24, 2012 07:53 PM

January 23, 2012

Saperion.com (BPM related posts): Das Internet der Dinge zwischen Himmel und Hölle und agilem BPM/ECM

Milch an Kühlschrank: “Hey, wenn wir zwei Flaschen noch einen Tag länger schaffen sollen, dann kühl uns bitte mal zwei Grad runter. Außerdem ist Nr. 2 schon fast leer, d.h. Nachschub wird notwendig.” Kühlschrank an Lebensmittel-Service: “Hier ist mein neuer Einkaufszettel. Geliefert werden kann morgen im Zeitraum von 10-12h.” Lebensmittel- an Liefer-Service: “Folgende Pakete sind [...]

by Dr. Martin Bartonitz at January 23, 2012 02:46 PM

Drools & JBPM: Guided Decision Tables - An update

The guided decision table editor in Guvnor has come a long way since it was first added to Guvnor in 2008 so I thought it worth while consolidating the efforts we've made into a short summary so those unfamiliar with recent developments can re-consider what a powerful tool Guvnor now posses.

The editor in 2008

Complete re-write

When Guvnor moved from GWT-EXT to vanilla GWT we took the opportunity to re-write the entire editor. GWT's table widgets did not offer the flexibility we wanted to provide users in their authoring environment: We wanted users to be able to quickly and easily build tables enabling them to concentrate on their rules rather than data-entry. Thus the new editor was born offering keyboard or mouse navigation, in-cell editing together with merging and grouping of cells.

The editor as it is today



Guided construction

To make the initial definition process as pain-free as possible we added a Wizard to walk users through creation. The Wizard also offers users the ability to generate an expanded form table.

The wizard



Merging


Merging of cells combines cells with identical values into one; thus providing a quick way to change the value of multiple cells in a single operation (of course, you could equally select multiple-cells with either a mouse-drag operation or keyboard but we felt merging minimized the process). Merging was also the precursor to grouping of cells, a powerful facility to collapse sections of the table whilst authoring.

Merged cells



Grouping

Merged cells can be collapsed into one. All editing operations continue to work as normal: copying-pasting rows and editing cell values etc. The only difference being that you can effectively hide sections of the table. Copying and pasting a grouped row also offers a convenient way to duplicate sections of the table (before editing as appropriate).

Grouped cells



Extended and Limited Entry

What type of decision table editor would we have without offering both Extended Entry and Limited Entry? Extended entry allows constraint and action values to be defined in the table body; whereas Limited entry moves the entire definition to the column itself with the body simply allowing the user to define which constraints and/or actions apply.

Limited Entry



Analysis


Support has been added to detect mistakes in your decision table. Currently we detect 2 types of problem and want to add many more.
  • Impossible matches
  • Conflict detection
Conflict detection



Integration of jBPM work items

Rules are frequently used from within jBPM to drive dynamic processes. What better then than providing a means for jBPM Work Items to be used in your rules' consequences? Work Item input parameters can be bound to Facts or their properties and likewise output parameters used to populate Facts.


Use of BRL fragments

Column definitions have historically only been able to offer a thin veil of abstraction. With the introduction of BRL fragments, columns can be defined using the full range of Guvnor's guided rule authoring capabilities (including DSL) which, coupled with Limited Entry, allows a higher level of abstraction to be realized.

A BRL fragment column



Roadmap

Whilst, you might agree, significant progress has been made made there is still a long way to go. There still is a tremendous amount of work we want to complete before feeling our decision table offering is as complete as we'd like.
  • Round-trip between Excel and Guvnor
  • Improved integration of V&V to provide visual feedback
  • Further V&V to check conflict, completeness, ambiguity, subsumption etc
  • Expansion and contraction
  • Enforcement of multi-hit and single-hit variants
  • Typed input of default values and lists of permitted values for Conditions
  • Pluggable editors for domain types
  • Column and row drag and drop
  • Horizontal decision table
  • Integration of WorkingSets

by Michael Anstis (noreply@blogger.com) at January 23, 2012 10:04 AM

January 22, 2012

BPM-Guide.de: Run Activiti on IBM Websphere Application Server with camunda fox

Both the Activiti community and our consulting customers are repeatedly asking me about how to run Activiti on IBM WebSphere Application Server. In this blogpost I want to summarize the problems and challenges you face when you want to do that and along the lines give a sneak preview of the upcoming WebSphere support in camunda fox (our enterprise BPM platform based on Activiti).

Let’s start with the challenges.

Transactions

A first challenge is transaction management. When developing a process application with Activiti, you often want the process engine to participate in container transactions. This allows you to implement units of work in which both the process engine and other transactional resources like a database, a message queue or EJB’s participate. The Java EE Solution to this problem is JTA, a specification which defines multi-resource transactions. Activiti integrates with JTA out of the box, if you configure the JtaTransactionInterceptor. This makes sure, that whenever you run a command (do something in Activiti, like completing a user task), we either start a new transaction or participate in the currently active transaction. The desired behavior is that if you invoke Activiti form an EJB Session Bean, it will take part in the transaction managed by the Session Bean / EJB Container. The same is also true in the opposite direction: lets say you call an EJB from an asynchronous service task, in that case Activiti will open a transaction when executing the service task and the EJB has the possibility to participate in that transaction. Why is this so helpful? As I said before it gives us the possibility to implement units of work in which both Activiti and the EJB Container take part and by the means of transactions ensure consistency: if Activiti fails, the EJB fails and vice-versa (remember ACID transactions?).

Now, why is this challenging on WebSphere? WebSphere Application Server does not provide a standard JTA javax.transaction.TransactionManager (like for instance JBoss AS or Glassfish), but instead exposes a proprietary interface named com.ibm.wsspi.uow.UOWManager. IBM is allowed to do so, as the Java EE / EJB specification does not require vendors to provide a JTA TransactionManager implementation. All they are required doing is providing a javax.transaction.UserTransaction (which Websphere does). The UserTransaction interface would allow Activiti to open new transactions and participate in existing transactions; however that is not enough for Activiti to function correctly. For some commands (for example when decrementing retries after a failed job) we need REQUIRES_NEW semantics for executing the command. This means we need to suspend the current transaction and start a new transaction. Now the javax.transaction.UserTransaction interface does not provide such functionality, which means that you need to use proprietary IBM API for achieving this. This is one reason among (others) why running Activiti on WebSphere application server requires you to solve the transaction problem. One possibility would be to use Spring’s org.springframework.transaction.jta.JtaTransactionManager abstraction and configure the SpringTransactionInterceptor in Activiti.

Performing Background Work

A process engine like Activiti uses the calling thread for performing most of its work. This is a natural consequence from the requirement to share transactions between Activiti and the application code, as transactions are thread-bound. This means that, when you call Activiti, the call will block until Activiti has performed its work. But there are also certain situations where Activiti will call you. For example if you have a timer in the process, Activiti will wait for the timer to reach its due date and then continue with executing the process. Hence Activiti performs some kind of background work, where it checks if it has work to do (the concept is called “Jobs”) and if so, it will perform this work. To make this happen Activiti needs to manage its own threads.

Now, in a managed environment like an applications server, you do not want to manage the threads yourself, instead you want the container to manage them (more exactly: it is even forbidden by the Java EE Specification). This is for various reasons like for instance to allow the container to perform additional “magic”, like monitoring the threads, detecting deadlocks, ensure that work submitted by an application is canceled when the application is undeployed, that threads requested by an application are stopped if the application is undeployed and so on. Most of this is to ensure that “everything is under control” and to ensure the overall stability of your application and server environment. Another important feature is ensuring that work submitted by an application is executed within the correct security / naming / transaction context.

When running Activiti on WebSphere, the main challenge is having the JobExecutor (this is the component which performs the background work) delegate to supported, container-managed threads. On WebSphere this means delegating to an asynchronous beans WorkManager. There are multiple interfaces to the WorkManager; one of them is commonj.work.WorkManager, another one com.ibm.websphere.asynchbeans.WorkManager. Using the WorkManager for Activiti background work was a problem until recently, as the activiti JobExecutor always started its own Threads and it was not easy to configure it. Recently we have done a number of refactorings in which we separated the JobExecutor logic from the thread management, such that it is now easier to implement a JobExecutor delegating to a Websphere WorkManager (watch out for Activiti 5.9).

Ok, so if we know all this, why is there no Activiti distribution for WebSphere you can just download?

Why is WebSphere Support not pre-built in Activiti?

The reason is that it is not only a technical problem. Activiti aims at being a highly configurable and embeddable engine. This means that conceptually it possible to integrate Activiti with whatever Java-based environment you come up with. This is a good thing! However, that also poses some challenges. One challenge is knowing where to stop. Take for instance WebShere Support: let’s say we add WebSphere support classes to Activiti. Now the main problem is to test and to maintain it. This includes automated testing and quality assurance, preferably on different versions of the application server, different Java Runtimes (e.g. the IBM JDK) and so on. That kind of effort is impossible for us to do in the context of an open source project, especially as WebSphere is not the only application server out there. This is why we focus on delivering a high quality embeddable process engine in the Activiti project, get that right and do not assume responsibility for integration with various platforms and vendors. Because, as I said before: even if we made that promise, it is hard for an open source project to deliver on it. And don’t forget: Somebody has to pay my salary :-)

One way out for you by the way could be the Spring Framework which already contains abstractions for many vendor-specific technologies like transactions and threading. So by providing first-class integration with the Spring Framework, we give users of Activiti the possibility to integrate with various vendors more easily, but it still means you have to do some integration work yourself and especially take the responsibility for the integration and maintenance of it yourself.

Support in camunda fox

In the camunda fox enterprise bpm platform we provide pre-built integration with IBM WebSphere Application Server 8. We do perform automated testing, quality assurance and maintenance and we offer professional support. This is one of some differences between Activiti open source and camunda fox enterprise.

 

While this is no “official” announcement about the camunda fox platform for websphere, I cannot stop myself from giving you a sneak preview about what you can expect in terms of functionally. You must have already gathered some of it form this blog (I know, it’s long again…): we support container managed transactions and container managed threads for background work. In addition, we support a central process engine service which can be shared by all applications installed on the application server. That also means that it allows you to align the container deployment lifecycle with process deployment lifecycle, i.e. when you deploy a WAR file (application) which contains processes, the processes are automatically deployed to the central process engine service. This is includes some class-loading magic as well. But more on this at a later point in time. So for the moment, enjoy the following screen-shots:

Process Engine Configuration using the WAS web console

Process Engine Configuration using the WAS web console

Configuration of the WAS WorkManager used by the JobExecutor

Configuration of the WAS WorkManager used by the JobExecutor

by Daniel Meyer at January 22, 2012 04:56 PM

January 20, 2012

Drools & JBPM: jBPM Form Builder roadmap

Greetings from Argentina. This post will try to cover a general view of where the form builder is right now and where it is going to be in the near future. You can get a current status view from the video below:



On this video you can see a great deal of how the form builder works today. It doesn't cover the jBPM console integration part or the automatic form generation option, but it allows you to see how users will experience working with the form builder. To download the project, you can find it in the following locations

Nightly builds
In the next few days, I'll start keeping a stable release on this other address as well:
Feel free to download, comment or join. That pretty much covers where the form builder is right now. As to where it is heading, here's an initial roadmap

jBPM Form Builder Roadmap


  1. Adding HTML5 templates: Current items work with pure GWT and HTML4 for Freemarker. The idea is to build a new renderer that will allow users to export to Freemarker as well, but allowing them to export using HTML5 instead of HTML4 to create the forms. The idea as well is to create as many menu options to properly cover HTML5 capabilities, such as audio and video tags, menus, fieldsets and so on.
  2. Adding new validations: Current validations cover basic concepts, like number or email validation. The idea is to expand and improve validation definitions, in order to allow both client side and server side validation to any level of complexity. Among new validations that are thought to be added, there will be regular expression validation, multi-field validations (applied directly to the form), and rules-based validation (in order to define a ruleflow-group specially to validate the correctness of input data)
  3. Adding script helpers to add dynamic ui components on client side: Script helpers are shown in the video above. They allow a user with very little knowledge of javascript to create scripting solutions for UI component's event handling. The idea is to create a new script helper to allow javascript to add a new visual component on a particular layout and layout position when an event happens.
  4. Cleaning up effects and form items library: Current implementations of form items (the UI components you drop on your form) and form effects (the actions available when you right click on a form item) are done in a way that could be made configurable with a proper refactor. The whole idea is to make it more easily extensible, minimizing the amount of code to be added to create a right click action for UI components, or a UI component itself.
  5. Adding tests for effects and form items library: Along with the previous item, some refactoring will be made to allow a better separation of display logic from actions logic, in order to create better test prepareness on the code side. Along with that, proper tests will be implemented for the form items and effects library.
  6. Adding server validation to the generated form's API: Extension of the form utility API used from jBPM console, to handle validations on server side. 
  7. Adding server interpretation of complex objects to the generated form's API: Currently, all form submit responses are treated like a map of simple data. The idea is to create complex object associations to particular paths in the form definition, in order to create the proper objects on submit time. This will benefit both user task definitions and rule-based form validations.
  8. Adding template management for complex objects for the generated form's inputs: The previous item covers submit to server rendering of request data, from simple data types to complex data types. This item covers the other way around, for when a user task is given a complex type and needs to decompose it to make it available for form input data. It will allow the user to define paths within an object when defining form inputs.
  9. Improvement of properties edition panel to add better coverage of properties for form items: This comes in hand with item 4. Once a proper management of form item properties is done, there will be a need for a better way of editing such properties.
  10. Improvement on tree and edition panel visualization: Bug fixing and visual highlighting in the current form are two of the main things to be tackled by this bullet.
  11. Allow switching layouts once they're filled without losing content: Currently, once you define a layout and start adding content to it, the only way to change layouts is to create a new one and move all the content manually. This item is thought to be able to do that automatically.
  12. Adding script helpers to allow onEvent simple validations on client side: Along with validation library expansion and server validation API, this item is thought to allow some validations to happen on the client side, to be handled on particular events (i.e. like on the change of value of an input field)
  13. Pagination items: Create UI components that would allow to create very large forms within several pages, all part of the same form.
  14. Definition of a standard page layout for a given user or role: Most companies have a template structure for most of their forms (wether it has a logo on a particular place, a standard stylesheet, etc). The idea is to allow designers to define such page layout and force its use to either some people or a group of people within the company.
  15. Definition of standard UI visualization strategies for particular types of data: This is to aid the automatic form generation. The idea is to allow users to define, for example, the standard way to create visual content for Strings, Integers, Booleans and so on. It should cover complex data types as well.
  16. New translators and renderers for JSF, XUL, Android, IPhone and Swing: Among other technologies, this would be a nice subset to cover. The order of the technologies and the omission of any don't express any priority whatsoever.
  17. Adding effects to allow loading contents from an ajax script or from an array variable: This way, content from a form could be loaded from an external source from the client side.
  18. Importing of inputs from other external sources: Right now the only way to import inputs on the IO Data tab is to have them defined inside a BPMN2 process. The idea is to be able to take them from a server invocation, a user file, or any other way. This will also allow to define forms for other platforms different than the BPM engine.

Cheers,
Mariano

by Marian Buenosayres (noreply@blogger.com) at January 20, 2012 02:31 PM

January 19, 2012

Drools & JBPM: Guided Decision Table - Copying\pasting rows

Before starting the next big feature, I relaxed a bit (Mark will kill me ;-) ) and added the ability to copy and paste rows in the guided Decision Table editor in Guvnor.

This feature comes to the Template Data grid for free.



Video here.

by Michael Anstis (noreply@blogger.com) at January 19, 2012 04:26 PM

Drools & JBPM: Project Idea: Debug Helper

Have a great project for any intrepid rule exlorers. The project itself is not too difficult and will make it really easy for people to get an idea for what is going on inside of the engine. The below is an early concept idea sketched out, don't take it as a spec to be rigidly followed :) You know where to find us if you want mentoring on this task:
http://www.jboss.org/drools/irc

While the rule itself is named, patterns are not. By allowing patterns themselves to take on ids, we can specify capture points. This is already possible for rule terminal nodes via listeners for rule activation, but users would still need to write their own handlers. The proposal here is to write a utility that will capture propagations during a given start/stop period that users can later inspect for both activations and join attempts. This will allow users to know exactly what is happening underneath.

Blow shows a rule with 3 potential capture points:
package pkg1

rule r1 when then
Person( name == "xxx" ) @id(p1)
Location( name == "xxx" ) @id(l1)
then
end
1) The terminal node, via the rule name.
2) p1
2) l1

The idea is to be able to turn on monitor, that has a start(), stop() and clear() methods. When started it will capture the insert, update, retract propagations. Further it should be possible to write assertion utility to assert on the state of the captured information.

When capture is turned on for a given capture point it will record a List of instances. As different nodes have different data, there is a base node and a child node. Every time a propagation happens an instance is created and added to the montior representing the current state.
BaseCapture
NodeType nodeType // enum for join, exists, not etc to allow for casting to correct node
String nodeName // enum for join, exists, not etc
Collection
rules // Rules is a collection, as the node might be shared
Activation activation // Activation at the root of the WM operation (may be null, if the acion came from outside of the wm).
FactHandle[] f // fact at the root of the working memory operation
FactHandle[] fh // fact[] that entered the node

JoinCaptire extends BaseCapture
Direction direction // Left/Right enum
FactHandle[] successJoins // the opposite fact handles that were successfully joined with, during this montioring session
FactHandle[] failedJoins // the opposite fact handles that were unsuccessfully joined with, during this monitoring session.
//Note if the propagation was from the left the join arrays will all be an length of 1.
RulePropagation extends BasePropagation
RuleStatus status // Matched, UnMatched, Fired
For example lets say I want to monitor the propagations on l1 and r1, that happens during two working memory actions. I can do the following:
ksession.insert( new Person("darth"));
fh = ksession.insert( new Location("death star));
NodeMonitor l1monitor = ksession.getMonitor("pkg1/r1/l1")
NodeMonitor r1monitor = ksession.getMonitor("pkg1/r1")
l1monitor.start();
r1monitor.start();
ksession.insert( new Person("yoda));
ksession.retract( fh );
l2monitor.start();
r2monitor.start();

List props = l1monitor.getResults(JoinCapture.class);
List props = r1monitor.getResults(RuleCapture.class);
l1monitor will show left propagation for yoda and a successful join for death star
r1 will have two entries. It will show a match (activation creation) but it will also show an unmatch, due to the retract.

by Mark Proctor (noreply@blogger.com) at January 19, 2012 03:38 AM

January 18, 2012

Drools & JBPM: Fine Grained Property Change Listeners (Slot Specific) (Mario Fusco)

Just a quick recap of what I did until now to check if we are all on the same page and also agree with the naming convention I used.

The property specific feature is off by default in order to make the behavior of the rule engine backward compatible with the former releases. If you want to activate it on a specific bean you have to annotate it with @propSpecific. This annotation works both on drl type declarations:

declare Person
@propSpecific
firstName : String
lastName : String
end

and on Java classes:

@PropSpecific
public static class Person {
private String firstName;
private String lastName;
}

Moreover on Java classes you can also annotate any method to say that its invocation actually modifies other properties. For instance in the former Person class you could have a method like:

@Modifies( "firstName, lastName" )
public void setName(String name) {
String[] names = name.split("\\s");
this.firstName = names[0];
this.lastName = names[1];
}

That means that if a rule has a RHS like the following:

modify($person) { setName("Mario Fusco") }

it will correctly recognize that both the firstName and lastName have been modified and act accordingly. Of course the @Modifies annotation on a method has no effect if the declaring class isn't annotated with @PropSpecific.

The third annotation I have introduced is on patterns and allows you to modify the inferred set of properties "listened" by it. So, for example, you can annotate a pattern in the LHS of a rule like:

Person( firstName == $expectedFirstName ) @watch( lastName ) // --> listens for changes on both firstName (inferred) and lastName
Person( firstName == $expectedFirstName ) @watch( * ) // --> listens for all the properties of the Person bean
Person( firstName == $expectedFirstName ) @watch( lastName, !firstName ) // --> listens for changes on lastName and explicitly exclude firstName
Person( firstName == $expectedFirstName ) @watch( *, !age ) // --> listens for changes on all the properties except the age one

Once again this annotation has no effect if the corresponding pattern's type hasn't been annotated with @PropSpecific.

I've almost finished with the development of this feature (at the moment I am missing the compile-time check of the properties named in the @watch annotation together with some more exhaustive tests), so if you think that I misunderstood something or there is room for any improvement (or you just don't like the annotation's names I chose) please let me know as soon as possible.

Mario

by Mark Proctor (noreply@blogger.com) at January 18, 2012 12:27 AM

January 16, 2012

Keith Swenson: Storytelling derails Process Discovery

There is an interesting video “Your Storytelling Brain”  from Cognitive Neuroscientist Michael Gazzaniga who talks about how we remember things.  He describes a part of the brain called “the interpreter” which functions to organize memories into plausible stories.  This is great most of the time, but causes a type of memory distortion that is gets in the way of designing appropriate business processes.

You memories are not perfect, but the interpreter can help to fill in details which are plausible.  Evidence of this is seen from how people who have suffered trauma that eliminates some of their real memories, will confabulate things to fill in the gaps, in a way to make a consistent narrative.  We do this all the time, and if you memories are complete enough, and your understanding of the context good enough, this confabulation works in your favor.

This tendency to create a plausible narrative effects process design in two ways.  The first is that when people are interviewed about a given process they have been taking part of, the interpreter part of the brain will make up things to fill in the gaps in the process story that they might not have been aware of.  Indeed, while working in the process, people will have a narrative of how the process proceeds outside of their direct interaction that may be completely inaccurate.  That narrative, however, help to support their own part of it.  Memory works by having a consistent story, not necessarily an accurate story.  They may hold false beliefs about a process, but as long as they do their part correctly there is no harm.  It may be hard, however, for a process researcher to distinguish the parts that they actually know, from the parts that they filled in to make a consistent narrative.

The second reason it gets in the way is that when the process changes, the narrative can change along with it, and in doing so the original process is forgotten.  Organizations are constantly changing around us, but as we learn of a change we incorporate it into our narratives, and forget that there was a change.  Because the memory has a filled in narrative, it is hard for people to remember the exceptional cases.  People will often insist that they have been running a process the same way every time, until you remind them of a particular exception they handled.  Then the remark is usually “oh yes, that did happen.”

I have written about “Process Confabulation” before as a danger inherent interviewing people to find out the existing process.  I found Michael Gazzaniga’s video interesting because it explains how this is caused by a basic element in the way memory works.


by kswenson at January 16, 2012 08:02 PM

Saperion.com (BPM related posts): Die neuen BPM-Trends für 2012: was uns dieses Jahr anmachen wird …

Es ist wieder einige Zeit her, daher habe mich mal wieder umgeschaut, welche neuen Akronyme, Begriffe und sonstigen Schönheiten sich am BPM-Horizont bemerkbar machen, jedenfalls was die Marktanalysten so sehen. Fangen wir mal mit Gartners Hype Cycle for Business Process Management aus 2011 an. Da ich die Grafik hier nicht veröffentlichen darf, so sei noch [...]

by Dr. Martin Bartonitz at January 16, 2012 05:59 PM

January 15, 2012

Keith Swenson: First International ACM Workshop

The organizing committee for the BPM 2012 conference has accepted a proposal for the First International Workshop on Adaptive Case Management  (ACM2012).  It will be a half or full day workshop (depending on the quantity of papers accepted) on Sept 3, 2012 in Tallinn, Estonia.  That is the Monday before the week-long 10th installment of the BPM conference series hosted this year by the Institute of Computer Science at the University of Tartu.

Official Title: The First International Workshop on Adaptive Case Management and other non-workflow approaches to BPM (ACM 2012) in conjunction with BPM 2012

Goal: While practitioners are trying to overcome the restrictions of workflow thinking, the research on the topic is somewhat lagging. The goal of this workshop is to bring together researchers and practitioners to discuss theoretical and practical problems and solutions in the area of non-workflow based approaches to BPM in general, and ACM (as a leading movement) in particular. This workshop is aimed to promote new, non-traditional ways of modelling and controlling business processes, the ones that suit better the dynamic environment in which contemporary enterprises and public organizations function.

Important Dates:

  • Submission deadline: 1 June 2012
  • Notification due 2 July 2012
  • Camera-ready submission deadline: 30 July 2012
  • Workshop: 3 September 2012

Submissions Categories:

  • Position papers raising relevant questions in the workshop area, identifying problems and providing a glimpse of solution for a given problem. Representing a basis for discussion, a position paper does not necessarily need to include solutions to its stated problems. Position papers must not exceed 4 pages.
  • Idea papers exploring the history, successes, and challenges for various non-workflow approaches to BPM and outlining research roadmaps for the future. Contrary to short position papers, idea papers should provide the in-depth analysis of a problem, review its existing solutions, demonstrate insufficiency of these solutions and suggest new (yet unevaluated but well argued) solutions. Idea papers must not exceed 12 pages.
  • Experience reports presenting challenges encountered in practice, their related case studies, success and failure stories. An experience report should clearly describe the working context, and focus on the problem and on the lessons learned. Experience reports should be complete and allow for rigorous testing of research theories methods and tools. Experience reports must be limited to 5-12 pages.
  • Research papers reporting original results in the area addressed by the workshop. A research paper should clearly describe the problem tackled, explore the relevant state of the art, describe the proposed solution and provide a preliminary validation of this solution. Research papers must not exceed 12 pages.

The real motivation for holding a workshop came from Irina Rychkova of the University Paris and Ilia Bider of Ibisoft in Stockholm who both got me involved as well.  Those who know me well may find it ironic that first academic workshop is being held in conjunction with the academic BPM conference.  Indeed, I criticized the BPM 2010 conference for its complete lack of case management topics.  While many proponents of BPM seem entrenched in Taylorist ideas that behind every job is a simple fixed process, there are many others who are searching simply for ways to make workers more efficient, regardless of whether the process can be predicted or not.  The forming of this workshop is evidence of that, and association with the well respected BPM conference series, it is likely that this workshop will include many well considered rigorous papers on Adaptive Case Management research.

I have been to Tallinn only once before, when I took the ferry across the Baltic from Helsinki where I was working on the TeamWARE Flow product in the early 1990′s.   That visit was marvelous, and I can only expect that Estonia much have changed remarkably in the long time since it has been out from under the shadow of the Soviet Union.  I am looking forward to it.

This is the third of three ACM events already planned for 2012, the other two are the ACM Awards, and the ACM Live Virtual Event in June.


by kswenson at January 15, 2012 07:30 PM

Keith Swenson: 2012 ACM Live Virtual Summit

Tom Koulopoulos of the Delphi Group is planning another Adaptive Case Management Virtual Summit for first week of June 2012.  This is the second of three significant ACM events planned for this coming year.

I don’t yet see the detailed agenda yet of the event — that announcement is still yet to come.  It is not my intention to scoop the announcement, but what I do know is that that we are planning to announce the winners of the 2012 International ACM Awards at this event.

Last year’s event featured one-on-one interviews with many top speakers on Adaptive Case Management as well as a keynotes by Jim Champy and Tom K himself.   Also, we announced the winners of the 2011 ACM Awards there as well.  Because the entire two day event is virtual, it is easy to attend from anywhere. And all the talks and presentations were video recorded and so they can still be viewed now, on demand.  I felt the event was well organized and represented a solid way for people to become much more knowledgeable about Adaptive Case Management.

I will update this entry when I have more specifics about this event.


by kswenson at January 15, 2012 04:04 PM

January 14, 2012

Keith Swenson: 2012 International ACM Awards

My first post of 2012 can not be delayed any further … so many things are commencing in the Adaptive Case Management world.  In this post I will cover the first of three important upcoming event you might want to plan for: the 2nd Annual Adaptive Case Management Awards.

Last year the WfMC sponsored the ACM awards and it was a huge success.  From the submissions, the panel of world renown judges selected the best 10 examples of the use of case management.  These were then featured in the First ACM Virtual Summit, and then in September the case studies became available to everyone in the form of the first ACM case book called “Taming the Unpredictable.”  The feedback has been incredibly positive.  It is very vaulable to have a book that describes in detail how people have actually used case management techniques to accomplish business goals.

This year we want to make it bigger and better.

  • We are going to spend more effort up front making sure that everyone knows about it, and attract a larger set of submissions, and hopefully select more finalists from that.
  • The judging criteria will be more refined after what we learned last year.
  • We already know to plan for the virtual summit which will encourage more people to participate.
  • We have an example of a successful book which will attract interest in submissions.

This format, of accepting case studies, judging, selecting, then presenting, and publishing in a book is a accepted way to gather the best examples into a place for delivering to an audience.  It is clear to me that the more that the public knows about this approach, the better they will be able to make appropriate use of it.

Most of the information you need is at the Adaptive Case Management Awards site.  The schedule is as follows:

  • Any time between now and Feb 28 register an intent by submitting an abstract.  There is no risk, and those who do this early will get some feedback and guidance on the abstract.
  • Before March 15 officially register.
  • Before April 20, submit the finished case study for judging.
  • June 6, winners will be announced at the ACMLive Virtual Summit
  • September, the associated book will be launched

Mark these dates on your calendar, you don’t want to miss out just because you missed the deadline.  I have a list of questions an answers below:

Must the case use a bona fide ACM product?  No.  ACM is an approach to supporting knowledge workers, not a type of product.  Many of the submissions last year were on custom home grown systems.  Some other cases were hosted on systems designed specifically for ACM, while still others were build on systems that had to be, shall we say, adapted into supporting case work.  Instead of looking at the system, you should ask the question of whether the case study is about supporting knowledge workers, and if so that would most likely be appropriate.

What really constitutes knowledge work?  A good reseource for this is my chapter from the 2010 BPM and Workflow Handbook on Business Intelligence which I link here for convenience (pdf):  Knowledge Work and Unpredictable Processes.  The publisher has made other books available to registrants at a discount.

What about Enterprise 2.0, or Social BPM Cases?  There is a big overlap between E20, social business, and enterprise social with adaptive case management.  See the judging criteria to evaluate whether your E20 case might qualify.  The case must show how knowledge workers are supported while getting work done.

How about Just Plain Case Management?  Be aware of the importance of adaptability.  Read my post on Understanding what “Adaptive” means.  For example, telephones clearly support knowledge workers, but they are not adaptive in any significant way.  Judges will be looking for some ability to mold the system to the individual knowledge worker over time.

Do you need more judges?  I am hoping to expand the pool of judges this year, and if you are have made a contribution to ACM discussions in the past year, please send a message to .

Stay tuned, I still have to cover the following posts:


by kswenson at January 14, 2012 08:31 PM

January 13, 2012

Drools & JBPM: Fine Grained Property Change Listeners (Slot Specific)

Mario just got a first cut working for fine grained property change listeners. Previously when you call update() it will trigger revaluation of all Patterns of the matching object type in the knowledeg base.

As some have found this can be a problem, forcing you to split up your objects into smaller 1 to 1 objects, to avoid unwanted evaluation of objects - i.e. recursion or excessive evaluation problems.

The new approach now means the pattern's will only react to fields constrained or bound inside of the pattern. This will help with performance and recursion and avoid artificial object splitting. We previously discussed this here:
http://blog.athico.com/2010/07/slot-specific-and-refraction.html
You can see the unit test here:
https://github.com/droolsjbpm/drools/blob/ca55c78429cbc0f14167c604c413cdc3faaf6988/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java

The implementation is bit mask based, so very efficient. When the engine executes a modify statement it uses a bit mask of fields being changed, the pattern will only respond if it has an overlapping bit mask. This does not work for update(), and is one of the reason why we promote modify() as it encapsulates the field changes within the statement. You can follow Mario's chain of work on this at his github activity feed:
https://github.com/mariofusco.atom

The adventerous amoung you can pick this up from hudson, or from maven, and start playing now. My hope is that this will make drools much easier to use:
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/drools-distribution/target/
Btw we are after a name. Drools is not a frame based system, so "slot specific" doesn't seem appropropriate. Property Specific seems a bit of a mouth full. I'm quite liking High Fidelity Change Listeners :) any other suggestions?

slot-specific is the name used by Jess for this feature, . It's also the standard way that Clips COOL works, which is the Clips OO module. Although that's partly a side effect of the triple representation of properties used in COOL, and the modifications are triple based. I don't know what mechanism Jess is using to enable this.

Mark

by Mark Proctor (noreply@blogger.com) at January 13, 2012 10:30 PM

January 12, 2012

Saperion.com (BPM related posts): BPM Offensive Rhein.Ruhr hat sich konstituiert

Freunde des Themas Business Process Management in der Region Rhein-Rhur dürfen sich über mehr Gelegenheiten zum Erfahrungsaustausch freuen. Die Berliner Kollegen hatten schon seit Längerem Gelegenheit gehabt, bei entsprechenden Veranstaltungen der BPM Initiative Berlin teilnehmen zu können, wie auch immer wieder davon berichtet. SAPERION ist offizieller Unterstützer der BPMB. Ich selbst bin Mitgründer der neuen [...]

by Dr. Martin Bartonitz at January 12, 2012 01:20 PM

Michele Chinosi (BPeX): BPMN 2.0 Handbook Second Edition

My article "Collaborative Activities Inside Pools" has been published again in this 2nd Edition!
 
Following the ground-breaking body of work in the BPMN 2.0 Handbook First Edition in 2010, this book is greatly expanded with substantial new content and chapters updated to the latest advances in this important standard.

** Detailed Table of Contents with full abstracts of each chap
ter here (9 pages PDF, no registration required)**

Every chapter from the First Edition was closely examined by its authors and updated to the very latest information. Six completely new chapters and another 50 pages were also added. Authored by members of WfMC, OMG and other key participants in the development of BPMN 2.0, the BPMN 2.0 Handbook Second Edition assembles industry thought-leaders and international experts.

The authors examine a variety of aspects that start with an introduction of what’s new and updated in BPMN 2.0, and look closely at interchange, best practices, analytics, conformance, optimization, choreography and more from a technical perspective. The authors also address the business imperative for widespread adoption of the standard by examining best practice guidelines, BPMN business strategy and the human interface including real-life case studies. Other critical chapters tackle the practical aspects of making a BPMN model executable and the basic timeline analysis of a BPMN model. In addition to free bonus chapters from the latest edition and extra material supplied by authors, the BPMN 2.0 Companion website contains BPMN and XPDL Verification/Validation files, webinars, videos, product specs, tools, free/trial modelers etc. This gives readers exposure to a larger resource on BPMN 2.0 and XPDL than a book alone can offer.

-- mchinosi

by Michele Chinosi (noreply@blogger.com) at January 12, 2012 08:55 AM

Michele Chinosi (BPeX): BPMN: An introduction to the standard - Update

This post just to update the previous one. The article has been published in the CSI Journal. Herewith the details:

BPMN: An introduction to the standard
Computer Standards & Interfaces
Volume 34, Issue 1, January 2012, Pages 124–134
Received 23 May 2011. Accepted 6 June 2011. Available online 13 June 2011.
http://dx.doi.org/10.1016/j.csi.2011.06.002

http://www.sciencedirect.com/science/article/pii/S0920548911000766


-- mchinosi

by Michele Chinosi (noreply@blogger.com) at January 12, 2012 08:53 AM

January 10, 2012

Drools & JBPM: jBPM Form Builder follow-up

Greetings! Among the things developed over the last two weeks for the jBPM Form Builder, here are the ones worth mentioning:

Script helper refactor: Some of the classes had issues when being stored on the server side, due to dependencies with GWT client-side classes. A small refactor was made to make them GWT independent, and utilize the GWT API from a particular view object to render on screen.
User roles implemented: JAAS implementations for JBoss and Jetty are available now as stated in my last post. The jBPM Installer inside my fork has the necessary implementations for JBoss, and the Jetty implementations are available to start up the project from the Debug mode in the Eclipse Plugin. Profiles are created as described previously: web designer and functional analyst. Web designer has all the functions available (can define forms, custom menu items and use any item available), while functional analyst can only define forms using the menu items authorized by the web designer.

The whole idea behind these components will be to facilitate web designers to administrate component standarization from inside the form builder.
And here's some of the next items on the to do list:

HTML5 templates: Current form generation templates for Freemarker work with HTML4. There will be a new set of them that will use HTML5, which will probably lead to new menu items to fully cover HTML5 components.
More script helpers: Current script helpers allow to make an easy implementation of an ajax service call, a combobox population ajax call, and to toggle visualization of  a particular component (selected by id). There will be more script helpers, focused on creating new visual components on runtime and live validation of fields. And that's where the next one falls in
More validations: We had a few simple validations to start checking where to store them and what to do with them. Now that they seem to reach a plateau where no major refactor is needed, it is a good moment to start adding a lot more validations to the ones that are already there.

That will be all for now. Cheers!

Mariano

by Marian Buenosayres (noreply@blogger.com) at January 10, 2012 01:55 PM

Drools & JBPM: Guided Decision Table supports BRL columns

Work has been completed to allow BRL fragments to be used as both (or either) Condition and Action columns in the Guided Decision Table within Guvnor.

You can see the feature in action here and read more about it below.

Adding a BRL column



A BRL fragment is a section of a rule created using Guvnor's (BRL) Guided Rule Editor: Condition columns permit the definition of "WHEN" sections and Action columns the definition of "THEN" sections. Fields defined therein as "Template Keys" become columns in the decision table.

A Condition BRL fragment



An Action BRL fragment



Consequently any rule that could be defined with the (BRL) Guided Rule Editor can now be defined with a decision table; including free-format DRL and DSL Sentences.

BRL fragments are fully integrated with other columns in the decision table, so that a Pattern or field defined in a regular column can be referenced in the BRL fragments and vice-versa.

A decision table with BRL fragments and regular columns



Source from BRL fragments

by Michael Anstis (noreply@blogger.com) at January 10, 2012 01:49 PM

Drools & JBPM: Fosdem Brussels 4 February 2012: Planner, Guvnor and jBPM designer

Fosdem is a free conference on Open Source in Brussels in the first weekend of February. It's a fun conference and getting quite big, filled with Open Source engineers and enthusiasts: long beards, red hats and Mozilla T-shirts are not uncommon :)

Marco Rietveld and I will be presenting in the JBoss.org dev room on Saturday:

There are a lot of other interesting talks too, such as Infinispan, Openshift, Forge, ... so if you're in the neighborhood, join us. Did I mention the entrance is free?

by Geoffrey De Smet (noreply@blogger.com) at January 10, 2012 10:01 AM

January 09, 2012

Saperion.com (BPM related posts): Is the thinking of business processes in BPM or ACM only a battle of hemispheres?

I will invite you reading the new article of Max J. Pucher, one of our thought leader in the area of efficient business processes: ACM and BPM: A Battle of The Hemispheres? In June of 2010 I wrote the article WfMC’s Thought Leader proclaimed the next BPM revolution in Maidenhead at the end of 2009. [...]

by Dr. Martin Bartonitz at January 09, 2012 05:36 PM

January 08, 2012

Thomas Allweyer: Vorgestellt: Model Driven SOA

Cover Model Driven SOAUm eine reale Anwendung auf Basis einer service-orientierten Architektur (SOA) zu entwickeln, sind zahlreiche Aspekte zu berücksichtigen und zu integrieren. Hierzu gehören Prozesse, Datenstrukturen, Maskenflüsse, Service-Spezifikationen und vieles mehr. Die meisten dieser Aspekte können heute mit geeigneten Notationen modelliert werden, und ein Großteil der benötigten Artefakte lässt sich aus den Modellen automatisch generieren. Die Herausforderung besteht darin, die verschiedenen Aspekte zu einer sinnvollen Gesamtmethodik zu integrieren und im Rahmen einer durchgängigen Vorgehensweise anzuwenden.

“Model Driven SOA” stellt einen solchen durchgängigen Ansatz vor. Damit hebt es sich von den meisten anderen Veröffentlichungen zu diesem Themengebiet ab, denn diese behandeln oft nur einzelne Aspekte. Doch ist beispielsweise die Generierung von ausführbaren Prozessen aus fachlichen Prozessbeschreibungen nur von begrenztem Nutzen, wenn man nicht gleichzeitig klärt, wie die Fachlogik der aufzurufenden Services spezifiziert und implementiert wird. Behandelt man solche Aspekte isoliert, so wird bei größeren Anwendungen schnell das Problem auftreten, dass man nicht mehr nachvollziehen kann, wie die verschiedenen Aspekte zusammenspielen.

Die im Buch dargestellte Methodik wurde aus der Praxis entwickelt. Die Autoren aus dem Hause MID, dem Nürnberger Modellierungsspezialisten, nutzten ihren umfangreichen methodischen Hintergrund um ihre praktischen Erfahrungen in einen durchgängigen Ansatz zu überführen. Dieser Ansatz wird nicht nur theoretisch erläutert, sondern an dem umfassenden Beispiel eines Investionsantragsprozesses praktisch angewandt. Dieses Beispiel steht auf der Website zum Buch mitsamt sämtlichen benötigten Tools, Diagrammen, Quelltexten und Anleitungen zum Download zur Verfügung. Die Werkzeuge für die Implementierung und Software-Generierung sind meist Open Source. Die für die Modellierung verwendeten Tools der MID können mit der im Download enthaltenen Enterprise-Lizenz sechs Monate lang getestet werden.

Die angewandte Vorgehensweise umfasst vier Phasen:

  1. Initiation: Hier geht es darum, die fachlichen Anforderungen zu verstehen. Im Fokus stehen die Geschäftsprozesse und die darin verwendeten Daten. Weitere Anforderungen werden in Form von Texten dokumentiert.
  2. System Evaluation: In dieser Phase wird die Funktionalität beschrieben und strukturiert, u. a. mit Hilfe von BPMN-Diagrammen, UML-Modellen und Maskenflüssen.
  3. Architecture Projection: Die Ergebnisse der System Evaluation werden in einer Softwarearchitektur umgesetzt. Dabei werden insbesondere die Komponenten und ihre Schnittstellen dargestellt sowie ggf. ein konzeptionelles Datenmodell.
  4. Software Construction und Deployment: Hier wird das implementierbare System entwickelt, wobei Sourcecode, Datenbank und weitere Artefakte generiert werden.

Die Ergebnisse der einzelnen Phasen bauen konsequent aufeinander auf, wobei aber auch eine iterative Entwicklung möglich ist. So können in jeder Iteration die genannten Phasen für einzelne Funktionen oder Komponenten durchlaufen werden. Wichtig ist die Nachvollziehbarkeit über die verschiedenen Phasen hinweg. Die Verwaltung der entsprechenden Abhängigkeiten macht es möglich, Änderungen konsistent über alle Ebenen umzusetzen. Dies ist eine wichtige Voraussetzung für die Wartung und Weiterentwicklung der Anwendung.

Das Buch richtet sich an Software-Architekten und Projektleiter, die Erfahrungen in der Entwicklung größerer Softwaresysteme haben und konkrete Hinweise für den Aufbau und die Weiterentwicklung ihrer eigenen SOA-Methodik suchen. Die Darstellungen und Erläuterungen gehen oftmals bis in die Details. Damit lässt sich einerseits genau nachvollziehen, wie die vorgestellten Ansätze tatsächlich funktionieren. Andererseits macht es die Lektüre nicht ganz einfach. Für Einsteiger in die Thematik ist das Buch daher weniger geeignet.

Viele der erläuterten Modellierungsaspekte beziehen sich konkret auf Funktionalitäten der Tools von MID. Zwar sind die Prinzipien und Vorgehensweisen auch unabhängig von diesen Tools gültig und nützlich, doch wird der Nutzen aus dem Buch für die Leser höher sein, die selbst die MID-Tools einsetzen oder sie kennen lernen wollen. Mit der angebotenen Evaluationsversion wird dafür eine gute Möglichkeit geboten.

Wer wissen will, wie SOA-Entwicklung wirklich funktioniert, wird in diesem Buch fündig. Um den größtmöglichen Nutzen zu erreichen, sollte man bereit sein, einige Zeit in die Arbeit mit dem Buch und dem angebotenen Download zu stecken.


Rempp, G.; Akermann, M.; Löffler, M.; Lehmann, J.:
Model Driven SOA. Anwendungsorientierte Methodik und Vorgehen in der Praxis.
Springer Berlin Heidelberg 2011.
Das Buch bei amazon.

Website zum Buch mit Downloads

by Thomas Allweyer at January 08, 2012 07:23 PM

January 06, 2012

Drools & JBPM: Last Chance - Drools & jBPM at ICAART (Portugal) 4th International Conference on Agents and Artificial Intelligence

The event is just one week away from being cancelled if we don't get more attendance. So if you are thinking of going, better sign up now, before it's too late.

Mark

---------------

Droosl & jBPM @ ICAART 2012 is now confirmed, and myself (Mark Proctor) and Dr Davide Sottara will be there. If you have any interesting research on or with Drools & jBPM that you would like to present on the day, let us konw.
6-8 Febuary 2012
Vilamoura, Algarve, Portugal
http://www.icaart.org/tutorials.asp

The day is a tutorial day aimed at all levels. It will start with general introductions to the technology but will slant off to more of our research based projects such as Drools Semantics and Chance, as it's part of an academic conference. We would also like to give an opportunity for the people to present their own research, slots can be anything from 20minutes to 60 - contact me if you are interested mproctor at codehaus d0t org.

There will also be plenty of time for discussions and help with your own projects.

Abstract

Drools is the leading open source, industry focused, rule engine. While Drools started life as a Rete based forward chaining engine, it has since transcended. It's ongoing mission is to explore declarative paradigms from a practical and industrial perspective, to boldly go where no engine has gone before.

The tutorial will start with a gentle introduction, suitable for all level of expertise, covering the core language and functionality slowly expanding into more complex areas. The topics covered include, but are not limited to:

Basic Concepts:

  • Patterns, Constraints and Unification
  • Data Driven and Goal Oriented Inference using Forward Chaining and (Opportunistic) Backward Chaining
  • Truth Maintenance
  • Temporal Reasoning and Complex Event Processing
  • Functional Programming
  • Traits and Declarative Models
Advanced Topics:
  • Decision Tables
  • Rule and Workflow Integration
  • Hybrid Rule-Based Systems
  • Agents and Services
  • Unified Testing

Brief biography of Mark Proctor

Mark Proctor received his B.Eng in Engineer Science and Technology and then his M.Sc. in Business and Information Systems; both from Brunel University, West London. His M.Sc. thesis was in the field of Genetic Algorithms; which is where he discovered his interest for anything AI related.


Mark became involved in the Drools expert system project at an early stage and soon became its project lead. Mark then joined JBoss (later acquired by Red Hat) as an employee when the Drools project was federated into the JBoss middleware stack.
Mark now leads the effort at Red Hat for a unified platform for declarative technologies; with a focus on rules, event processing, workflow, semantics, distributed agents and governance.

Brief biography of Davide Sottara

Davide Sottara received his Ms. Degree in Computer Science(2006) and his Ph.D (2010) in Computer Science, Electronics and Telecommunications from the University of Bologna.
His research and development interests include Artificial Intelligence in general and Decision Support Systems in particular, focusing on hybrid systems combining predictive models and rule-based systems.

Since 2006, he has been working on the development of intelligent DSSs in the environmental and medical field. He is a member of the Drools open source Community, leading a sub-project on the extension of production rule engines to support hybrid and uncertain reasoning, and he's also involved in the RuleML rule language standardization initiative. He is currently working on remote health-care systems enhanced with AI-based predictive, diagnostic and planning features.

Contacts

e-mail: icaart.secretariat@insticc.org

by Mark Proctor (noreply@blogger.com) at January 06, 2012 04:17 PM

January 04, 2012

Drools & JBPM: The Decision Model IP Trap - Part Drei

part 1 part 2 part 3

Recently Mr Suleiman Shehu wrote a misleading rebuttal on my blog posts "The Decision Model IP Trap" and "The Decision Model IP Trap - Part Deux ". He took great pains to declare that his article was balanced and impartial.

On a side note, interesting post by the famous John Carmack from ID Software on patents - "Yes, it is a legal tool that may help you against your competitors, but I'll have no part of it. Its basically mugging someone." [Carmack]

Mr Suleiman Shehu attempts to argue that patents and open source do mix, and mix regularly, in an effort to highlight my unreasonableness for not considering TDM within Drools. He cites patents owned by Oracle for Java and the recent Oracle and Google court case of those patents as the basis for those arguments. Further he tries to explain that the KPI usage policy is perfectly acceptable for any Open Source project.

Each and every fact he uses to form the basis of his argument is provably incorrect and shows he has no understanding of licensing within Open Source, or the different factions in Open Source, which admittedly is not a simple topic, but that is no excuse. You cannot bundle all of Open Source under a single umbrella argument, each license has different restrictions and guarantees. Having built his rebuttal on misguided, misunderstood and false assumption (points 1 to 4) he then slides to conjecture on my beliefs and motives for which he has no evidence (points 5 to 7). This completely nullifies any claims he has for impartiality, balance or integrity.

I have kept an original copy of his article here. For brevity purposes I have abridged his points, in a way I feel encapsulates his intent. In the original copy I created two columns, where the first column shows the section numbers that correspond with the points in the main document, which is in the second column. This is to show the source for the abridged version in this article.

It was not so long ago that Open Source Systems (OSS) came with a lot of uncertainty. Providing certainty was a large part that allowed mass OSS adoption of both developers and users. Patents create legal uncertainties.

Licenses like (but not limited to) the GPL and Apache License bring certainty, over the years they have built up strong brand recognition that creates instantly known commodities for social charters and usage restrictions of a project. These are catalysts allowing for OSS communities of developers and users to thrive. The licenses do what they say on the tin, you don't need expensive lawyers to hunt down potential additional restrictions. As a leader of an OSS project I value the certainty these bring. I won't stand quietly by, while others seek to dilute those certainties and to muddy the water of respected OSS brands that many have worked hard to establish.

Bearing this in mind, here are the main points:

1) There is no reasonable reason why Drools cannot embrace TDM – WRONG.

1.1) Legally this cannot happen. The Apache license forbids contributions which are covered by patents not made available under the terms guaranteed by the Apache license. The license is crystal clear on this. The same is true for the GPL.

1.2) This actually rebuts his entire article, and is probably the end of the discussion. But for completeness I will falsify each and every fact that Mr Suleiman Shehu uses.

2) Drools is written in Java. Java is patented, your world is already using patents, so what's your problem – WRONG.

2.1) There are no patents for the Java language specification. The term Java is trademarked and you must pass certification to use it. Java can be used to refer to the platform, which is the language specification + libraries + virtual machine. Oracle has patents for its virtual machine, the JVM.

2.2) The Java language specification has no patents. It is possible to implement a VM that can execute Java which does not infringe upon Oracle's patents; see Kaffe: http://www.kaffe.org/. The Java specification provides a safe buffer from possible infringement of patents, from the perspective of developers targeting the Java language.

2.3) This is why patenting of methodologies, specifications and business practices is actually far more dangerous that patents for implementations, where alternative implementation techniques can nearly always be found. If the Java language specification was patented, it would be impossible to do an implementation that does not infringe – in such a situation Java would not have taken off in OSS.

2.4) Illustrating this argument further, Drools DRL is derivative of Ilog's IRL, while IBM may hold patents for the execution of IRL, that has no bearing on our derivative implementation for the IRL language. If however IRL was patented, that would be much more chilling. So it is important to understand the difference in patenting of a specification, which is absolute, and implementationswhich can be worked around.

3) Oracle granted OpenJDK exceptions for those patents, as long as you obey its specification. Why is that different to KPI granting OSS exceptions. If its good enough for them (OpenJDK), why isn't it for you – WRONG.

3.1) When Sun placed its JVM implementation under the GPL license all its patents were also made available under terms of the GPL license. While the Apache license explicitly gives universal and perpetual usage of patented contributions, the GPL has similar implicit terminology. The patent licensing under certification is something completely different and is considered an additional guarantee.
http://en.swpat.org/wiki/Java_and_patents

"OpenJDK is has been distributed by Oracle under GPLv2.[1] GPLv2 includes two implicit patent licences, so users of OpenJDK should be safe, and modified versions of OpenJDK should also be safe (even if they're heavily modified).

“The protections in the GPL are unconditional. The software doesn't have to comply with any specifications in order to benefit from these protections."

3.2) KPI could better clarify its OSS exception. The use of the term “Open Source” creates ambiguity as each license brings different issues that need to be tackled. For this they need a better understanding of OSS licensing – GPL/MIT/BSD/ASL. As stated above for either Apache or GPL, you either provide universal and perpetual access to those patents or you don't. A project cannot be under the terms of GPL if it contains additional restrictions. If there are restrictions on usage, then it's not GPL. Also be aware that providing access to patents for GPL projects does not make them available to Apache licensed projects – see 4.

4) Java is patented, you are safe if you certify - see 3. Which is why Oracle is suing Google. So if those people can work with patents, why can't you – WRONG.

4.1) As stated in point 3, OpenJDK is not "licensing" patents under restrictive terms based on certification. Those grants are universal and perpetual within the GPL eco-system. So using 4's for the "if it's good enough for them, why isn't it for you" is broken. This is further falsified by point 2 where Drools targets a language specification that is not patent encumbered. Oracle is not suing Google for making something that executes Java like code, the Java language specification is not patented. It believes the Google VM infringes its patents. As stated in point 2 it is possible to implement Java while not infringing patents, Google certainly believes they don't infringe on those patents. Even if Google is found to infringe on some Oracle patents, that does not distract from the fact that Java, the language spec, is not patented and all OpenJDK patents are available under the terms of the GPL.

4.2) Google's issue is related to different OSS eco-systems, which is an entirely different subject and out of scope. In short Google's VM is licensed under the Apache License while OpenJDK is under the GPL. Those perpetual and universal grants are restricted to those eco-systems they were placed under. GPL v ASL is a subject completely out of scope. So again, it has got nothing to do with one OSS project using patents under restrictive "certification" terms, see point 3. If Google had placed its VM under the GPL, Oracle would not be able to sue them.

-------

Having shown that each and every fact he uses to support the basis of his argument is completely wrong lets now turn to the darker sides of his blog, where he misappropriates someone's comment and slides to conjecture on my beliefs and motives, for which he has no evidence. This completely nullifies any claims he has for impartiality, balance or integrity.

5) Jacob Feldman, from Open Rules, as an Open Source vendor has endorsed the TDM patent position. "If KPI TDM patent usage rights statement appears to be acceptable to Jacob at OpenRules – an open source decision management company www.openrules.com ) what is there to prevent you from using TDM within Drools?" - MISAPPROPRIATION

5.1) Before you misquote someone whose comment was intended to be amicable simply to avoid conflict, you should probably check with them first before you use them as a full blown endorsement. I have known Jacob personally for many years and have already spoken to him on the matter. And I think I've already answered well enough, time after time, why even legally this is prevented.

6) "The only people who have the moral right to own patents are open source software companies who will naturally use their patents defensively." - CONJECTURE

6.1) That is complete conjecture with no basis of evidence. I have never and will never claim any arguments based on morality. Yes, I believe that patents hinder innovation in software. Yes, I believe that patents restrict the potential of Open Source, as it cannot license patents (as proven in points 1 to 4). This has nothing to do with morality. I am invested in Open Source, I have every right to protect my interests and my employers interests and attempt (within the law) to limit those that might negatively impact on said interests. In the same way any individual or company has every right to hold patents to protect their interest. Morality has nothing to do with it.

7) "Mark believes that this TDM patent should be made available to the wider community on an Apache licence because I believe (but I cannot prove this belief) that Mark would have liked to integrate TDM with Drools in some way and therefore argues that an open source project should not be encumbered with any software patents." - CONJECTURE

7.1) This is so bad in so many ways that I don't even know where to begin. It borders on being libellous. You are trying to claim that I wish to appropriate someone else's property because I wish to use their ideas.

7.2) I've repeatedly said, in almost every thread on this subject, that I consider the research projects Prologa and XTT2 to be far more extensive, and that I will be using those. That alone falsifies any conjecture you are trying to make. Shame on you.

7.3) I think I made it clear in point 6 that my motives are simply about protecting my interests. I'm invested in Open Source, I believe patents restrict the potential of Open Source and I have every right to execute in a way to negate those restrictions.

7.4) I have never said I believe that they "should be made available". That's a very strong statement, insinuating I believe in the appropriation of someone else's property based on arguments of morality. Larry came to me and asked if we would use TDM within Drools, I cannot legally do so under the terms of the Apache license. If they wish for Drools to incorporate TDM, they need to license it under those terms - the choice is theirs and theirs alone. "Should" doesn't come into it.

7.5) Patents create a ‘walled garden’, Drools cannot license those patents under restrictive terms. Thus wider adoption of TDM is not in my employer's commercial interests, as we cannot provide implementations for those potential customers who want TDM. I have every right to protect my employer's commercial interests by communicating this issue to potential TDM adopters, to ensure they do not become excluded from from Open Source.

Mark
Disclaimer: This post is made in a personal capacity. Nothing written above should be construed as Red Hat's corporate position.

by Mark Proctor (noreply@blogger.com) at January 04, 2012 08:35 PM

December 25, 2011

Drools & JBPM: Less boilerplate in Planner: Generic MoveFactory

The recently released Drools Planner 5.4.0.Beta1 includes 2 Generic MoveFactories. That means it's no longer required to implement  a MoveFactory and Move to use a local search optimization algorithm such as Tabu Search or Simulated Annealing.

For example, the MachineReassignment example configures Tabu Search like this:

  <localSearch>
    <selector>
      <selector>
        <moveFactoryClass>org.drools.planner.core.move.generic.GenericChangeMoveFactory</moveFactoryClass>
      </selector>
      <selector>
        <moveFactoryClass>org.drools.planner.core.move.generic.GenericSwapMoveFactory</moveFactoryClass>
      </selector>
    </selector>
    <acceptor>
      <propertyTabuSize>5</propertyTabuSize>
    </acceptor>
    <forager>
      <minimalAcceptedSelection>1000</minimalAcceptedSelection>
    </forager>
  </localSearch>

Notice that there is no MachineReassignment specific code in there whatsoever. But if I wanted to, I could easily mix in a custom MoveFactory implementation too.

Planner comes with 2 generic move factories out of the box:
  • GenericChangeMoveFactory: A GenericChangeMove changes 1 planning variable of 1 planning entity to another planning value. For example: Given course C1 in room R1 and period P1, change its room to room R2.
  • GenericSwapMoveFactory: A GenericSwapMove swaps all the planning variables of 2 planning entities. For example: Given course C1 in room R1 and period P1 and Course C2 in room R2 and period P2, put course C1 in room R2 and period P2 and put course C2 in room R1 and period P1.
They are slightly slower than a custom implementation, but equally scalable.

by Geoffrey De Smet (noreply@blogger.com) at December 25, 2011 04:39 PM

December 23, 2011

Drools & JBPM: The Decision Model IP Trap - Part Deux

part 1 part 2 part 3

A while back I published this article titled the “The Decision Model Trap”, http://blog.athico.com/2011/11/decision-model-ip-trap.html. In short it highlighted the dangers of adopting a patented methodology and my opinion on Red Hat's stance on the matter. The patent is owned by the Knowledge Partners International (KPI) who push TDM.

My article was referenced in a thread, started by Jacob Feldman from Open Rules, in a linkedin group for “The Decision Model”. It's a closed group, A copy is provided online here. The original link is here:

I'll quote Jacob below:
“First I learned about a possible patent for The Decision Model from Mark Proctor – see http://blog.athico.com/2011/11/decision-model-ip-trap.html. But it was impossible to find any references to it on the web. Besides, neither Larry nor Barb ever mentioned anything about the patent (at least to me). So, I thought that was just a misunderstanding.

However, on Dec. 6, 2011 USPTO apparently granted a patent to Larry and Barb – see http://www.freepatentsonline.com/8073801.html. I believe it would be only helpful if the Decision Model authors openly explain their position regarding this patent to all of us. Otherwise, such a “holiday present” may scare the entire decision modelling community to stay away from TDM. “

The thread turned hostile with a KPI representative demanding I clarify my motivations and then resorting to belittling me – but I'll come back to that later. The result was that eventually KPI made an announcement on their objectives and intentions with regards to the patent and TDM. The link for this is here:

Lets look at this briefly:
Objectives of the Patent Policy:
  • To ensure that we are able to evolve what we started without risking an infringement of someone else's patent.
  • To share the ideas behind The Decision Model in an orderly way.
  • To protect its rigor, hence its reputation.”
With the current insanity of the various patent systems, having to play the patent game, just to protect yourself is a reality. However restricting 3rd party use of that patent is not necessary to achieve the later two goals. Trademark and certification is a perfectly adequate, if not far superior and more effective way to achieve those goals. Unless they have other objectives, not listed, I invite them to license their patent under terms similar to that in the Apache Software License.

Then lets get onto their next statement:
"Vendors who provide Open Source Software, and who wish to incorporate TDM can obtain a royalty-free license for Open Source software. There will be a certification fee and process for Open Source vendors who desire this optional software certification."

Talk about the classic honey trap. Ring ring, ring ring..... "hello?... Hey KPI it's 2002 calling, they want their business ideas back". For those that don't get the joke it's a play on the "hey hunny, its the 80s calling, they want their hair back" :) Seriously the world has moved on, it's clued up, they don't fall for that clap trap any more. KPI, there is an awesome website, that covered the SCO débâcle, called groklaw.net - very recommended reading. If you are an OSS vendor and take KPI up on their offer, you aren't not Open Source - end of story. Just don't do it to yourself, you deserve better, your customers deserve better.

It's old news now that KPI through a partner is trying to infect the OMG Decision Model and Notation standard effort, http://www.omgwiki.org/dmn-rfp/doku.php. Private emails have been sent between the various heavyweights in the OMG process. I think the general sentiment was "not a chance in hell". So that's one nail in the coffin. A proprietary and encumbered methodology will die when faced with an un-encumbered official and open standard.

They may however try to argue that their patent covers the resulting DMN standard, regardless of whether the DMN group accepts their proposal. The result on the industry in general could be chilling. I would urge KPI to re-read groklaw.net about what happened to SCO when they tried to enforce bogus patents. Yes that's right, “SC...Who?” - it's doubtful your reputations and company brand would survive if you became hostile on an open standard and/or an open source implementation of that standard. RIP TDM.....

So let's now get back to that linked in forum posting. As the thread was started by quoting my initial blog, when someone asked what impact this could have on the industry, I felt that I had every right to re-iterate a key point from the article. That while TDM continues to be patented the industry will move around and beyond it, and that the work we are doing lifting from the extensive research made available in the Prologa and XTT2 will also make it's patent irrelevant.

Michael Grohs, VP of Business Development @ KPI, jumped in demanding I declare my motivations – as if I was some how being underhanded. I don't think he had taken the time to read my article. I think it makes my stance and motivations very clear. But then I believe he was more interested in posturing than substance. I'll show two key points from the article, I think they show my stance and motivations pretty clearly.
“...snip...
Open Source and Patents do not mix. When you get software from Red Hat you are guaranteed its 100% Open Source, not maybe OS or partly OS. From top to bottom, inside and out 100% OS goodness.
...snip...
In the mean time we in the Drools team will continue to take our inspiration from the excellent and unencumbered research projects; Prologa and XTT2.
http://www.econ.kuleuven.be/prologa/
http://ai.ia.agh.edu.pl/wiki/hekate:xtt2”

The thread continued to regress into noise. With further indications that I was trying to be underhanded, by demanding I declare my motivations. It was insinuated that I don't live in the real world, that the patents I have through Red Hat make me hypercritical for demanding “special rights”:
“but then world is full of people who believe that they are entitled to special rights which they believe other people should not have. “

In general there seemed to be a lack of understanding on the use of defensive patents within OSS, particularly on how they have virtually no restrictions, beyond that defensive clause – as specified in the Apache Software License. There also seemed to be a lack of understanding on the walled garden patents create, shutting off the OSS research world - which is why I oppose this so vehemently.

Finally Michael, a VP @KPI, just decided to get full out snotty on me. I couldn't figure out if he was trying to belittle me or indicate that I was being underhanded by concealing that I work for Red Hat – or maybe both. I guess when you have nothing of substance to say, just use insults:
Michael:”Mark I understand that your and Edson's patent is assigned to your employer Red Hat and not to the World, but correct me if I am wrong. So it is actually Red Hat who does the gifting. “

I apologise in advance for the slightly over pompous use of “I”. Those that know me, know that while I evangelise the technology, that I will big up the Drools community in general and it's achievements - I do not try to add grandeur directly to my personage, that actually I'm a little shy of direct attention. I believe Michael thought I was some peon of a developer, scuttling along to my masters commands. So given the circumstances, I felt that a point should be made:

Michael:"I understand that your and Edson's patent is assigned to your employer Red Hat and not to the World, but correct me if I am wrong. So it is actually Red Hat who does the gifting. "

mark:"I'm really not sure what point you are trying to make with this comment. When you have to reach for semantic interpretations it makes you sound bitter and doesn't become an industry professional. I'm not even sure I should dignify it with a response.... but then I wouldn't be me :)

"So it is actually Red Hat who does the gifting"
I don't make it any secret that I'm employee of Red Hat, I'm very proud to work for the worlds number one Open Source company.

But I don't know if that is the point you are trying to make, or if you are trying to belittle me by arguing semantics on the appropriation of the term "we". Much as Suleiman keeps trying to talk down to me by using terms like "real world" and "special rights". So I guess I should answer both possibilities, neither are becoming for you.

I'm the co-founder and creator of Drools, I did this before joining JBoss. The choice to license Drools under the Apache Software License was mine and done before joining JBoss - JBoss was later acquired by Red Hat. It is this license, that I chose, that grants those free and perpetual rights. In fact it is this license that ensures that neither I nor Red Hat nor anyone else contributing to Drools project may file a patent that is not covered under this free and perpetual rights, when that patent relates to Drools.

While at Red Hat it was my choice to file the patent and my choice to do the work necessary for the patent, I could have chosen not to file a patent. Edson also had those same personal choices and we did the work together.

I would say considering those choices that I made I have a write to use the term "we". We as in myself, Edson and Red Hat.

"and not to the World"
You are trying to argue the points of assignment and usage and gift? I'm not sure which part of the following you don't get:
"a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work" "

It doesn't get more "gifting" than this. Well maybe it can. Having watched a user gorge themselves on christmas pudding, mince pies and port. I could wrap the patent in silver paper with stars on it, tie a red bow around it, put on my Red Fedora and climb down the chimney and ram it down their throats. Is that "gifty" enough for you? :) to clarify the term "their" I mean "the world".

......next? “

Anyway I'm looking forward to what Jan Vanthienen, one of the decision table godfathers, has to say on the matter in the new year. I'm guessing that he's not pleased that someone took his work, changed the names used in the terminology and patented it.

Mark
Disclaimer: This post is made in a personal capacity. Nothing written above should be construed as Red Hat's corporate position.

by Mark Proctor (noreply@blogger.com) at December 23, 2011 01:41 PM

December 20, 2011

Drools & JBPM: Drools : A Journey towards a Meta Framework for Hybrid Reasoning Systems

Introduction

Recent versions of Drools have started to show our direction towards a hybrid reasoning system, going beyond production rule systems. In 2011 we introduced prolog style derivation trees, with reactive materialised views, we also introduced traits. In 2012 we'll continue to build out more of the prolog like functionality and traits will expand to description logic for semantic reasoning.

To make further progress I feel we need to smash apart our current infrustructure that is hard coded for the rigid way PRD systems where designed 30 years ago. In that time the structure of PRD systems hasn't change that much. In essence they have an agenda + conflict resolution strategy. Simple "groups" have been added by various systems be it a single push/pop stacks or rufeflows. Further execution control has been hard coded via attributes.

If we could break Drools down into smaller components, each with life cycles, event models, hook points and designed for compositability - what would this look like? This would provide more of a meta framework, so the author can define how it's execution should behave and open up Drools to a wider variety of research and problem solving.

Existing PRD behaviour can be easily provided as an "out of the box meta configuration", however it is hoped via "macro's" power users can implement other useful types of behaviours and provide those to end users as fully encapsulated macro's.

By opening up the way that Drools components can be easily brought together we hope to make it easier for people to try out different research ideas - without having to develop yet another engine. This will allow ideas to go beyond that conceived by the core development team.

I hope the introduction of a macro concept for rules will allow for a more pattern oriented approach to rule engine development.

When reading this document please cast aside preconcieved ideas of what a rule engine is or how it works. The document is conceptual in nature and at this stage I would like conceptual input on how to progress the ideas, and not spend 95% of the time argueing over which symbols or keywords to use, or whether it's needed (see http://www.bikeshed.com). Expect many rough sketches, incomplete syntax etc, it is conceptual brain storming and not an implementation spec.

Continuous updates to this article can be found here.

Module

Additional ideas on modules for rules can be read as part of the research on Venus:
Venus: An Object-Oriented Extension of Rule-Based Programming (1998)
An Overview of the VenusDB Active Multidatabase System (1996)

The module concept can be introduced as generic container for rules. The module consists of a name and arguments. Parenthesis can be ommitted if no arguments are specified. There are also further member variables, internal to the module. A module supports attributes. A module can specify a single parent module, there is a MAIN module which is the default parent of all modules. A module may optional extend other modules
<@attribute(....)>*
module <module_name> ( <arguments>*)
<parent module_name>?
<extends <module_name>+>*
<variables plus optional initialisation>*
A DRL can have multiple modules specified. Within the DRL file all rules that come after that module name are associated with the module.
module A
rule r1....
end

rule r2...
end

module B(String s, Person p)
var Book b

rule r3...
end

rule r4...
end
NOTE) Can modules span namespaces? What does a namespce mean for a module, does it live within the namespace or is it global? For now assuming scoped to namespace.:

A module can be called like a java Runnable, the caller's method signature must match the specified arguments or a runtime exception is thrown
Module m = kruntime.packages["org.domain"].modules["A"]
ModuleHandle bhA = m.run()

m = kruntime.packages["org.domain"].modules["B"]
ModuleHandle mhB =m.run( "S", new Person("darth") );
The parameter variables are available to the rules inside of the module, in a similar manner that globals are. An array pattern referencing the arguments is injected as the root pattern to each rule. This not only makes the variables available but acts as a control object for when rules can fire with those variables. The ModuleHandle has a "stop" method that results in that array element being retracted, and thus the rule cannot fire any more for those variables. Even rules associated with that module that do not depend on those variables has the root control fact injected.
mhB.stop()
Note that a module can be called multple times with different arguments, each results in a different ModuleHandle. Should a module be called with existing arguments the previous ModuleHandle is returned. So you can consider a module instance module + variables.

Passed module arguments may or may not be facts, if they are facts they may be modified (unlike globals) and patterns will respect and react to that change as normal. The module's called signature is updated.

The role of member variables is for scoped data avaliable to events, such as counters or intermediary objects.

(NOTE) If we want to make member variables available to rules, we will need to think carefuly about the behaviour, as they have more potentially more complications than globals. Currently they are only available as fields on events, see the activation-group variance.

Match

A Match is the same as the traditional Activation concept in PRD systems. It has an array of FactHandle's for the matched objects. But we recognise the Match can be active or dormant, and use a boolean to represent this, and that even information on dormant matches can be useful in reasoning systems. A Match is considered active if it is ellible for for foring and has not yet done so.
Match 
FactHandle[] facts
boolean active
(NOTE) Maybe instead of "boolean active" we should have an enum, and possible also including "running" as a state. ACTIVE, RUNNING, DORMANT.

(NOTE) It's possible for a rule + facts to fire multiple times without relaxing (made false). We should optional keep a counter for the number of times fired, and even each execution can be time stamped.

Module Properties

Module Properties
activeSize // number of active Matches, queries can be used for more complex cases using rule attributes
dormantSize // number of dormant Matches, queries can be used for more complex cases using rule attributes
activeMatches // Collection of active Matches
dormantMatches // Collection of dormant Matches
(NOTE) The size and and collection properties only contain relevance for eager matching algorithms that compute an entire cross product for each WME change. Future versions of Drools may optionally implement some lazy matching and in those situations the user's understanding of those properties may be a problem.

Module Methods

Module Methods
cancel() // all active matches are made dormant
cancel( Match ) // cancels a match, i.e. sets it dormant, if already dormant this method does nothing.
refresh() // all dormant activates are made active, however filters such as calendars, enabled etc are still obeyed
refresh( Match ) // refreshes a match, i.e. sets it active if it's dormant, if it's already active it is ignored
halt() // The state of the module is preserved, but no
continue() //
addListener() // type inference adds the listener implementation to the correct list(s).
// Listener composition for single instance is allowed, meaning it is added to multiple listener lists.
start(Object[] args)
stop()

Module Events and Lifecycle

A Module has a life cycle to which listeners may be added.
Module Events
onEnter // when a module is called
onExit // when a module is stopped
onMatch // when a rule is matched
onRematch // when a rule is matched and is matched again, without relaxing first (via update)
onUnmatch // when a rule stops being matched
onBeforeFire // before a rule for this module fires
onAfterFire // after a rule for this module fires
onHalt // tells the listener halt has been callled
onResume // tells the listeners resume ahs been called
onEmpty // when the size == 0, all Matches are dormant -- other potential events --
onBeforeRuleEvaluation // before a wme insert/update/delete for this module
onAfterRuleEvaluation// after a wme insert/update/delete for this module

onEmpty will only be triggered after the first rule evaluation phase. i.e. it does not fire after onEnter, before the rule evaluation phase has had a chance to execute.

(NOTE) Other potential events are before/after rule evaluation. Each WME insert/modify/update causes a rule evaluation, and could be listend to via onBeforeRuleEvaluation and OnAfterRuleEvaluation. This poses problems with concurrency where potentially multiple insertions/updates/modifies could be happening at the same time. So at best it's a listener scoped to a fact, we cannot guarantee the resutling matches are assocated with this event, unless serial rule evaluation is enforced - which may be a possible configuration for a module.

DRL will support the ability to declare literal functions attached to these listeners, the exact syntax for this is TBD. But the keyword will probaby be "on.". We will support .Net style delegate operators for = and += when adding or setting listeners.
on.Enter += {
}
Those listeners can also be added from java code.

Simulation the Agenda


A Module itself doesn't do anything other than obey the life cycle of the prescribed events, it doesn't even fire a rule, making it dormant. The only thing the Module does is maintain the list of active and dormant matches.

However this then allows a much more flexible system to which the end user can customise the behaviour. For instance the traditional agenda+conflict resolution strategy can be implemented via the onMatch/onRematch/onUnmatch listeners.
class Agenda implements onMatch, onUnmatch, onRematch { 
....
}
The above class implements a composition of event listener interfaces, but it only needs to be added to the module once
module.addListener( new Agenda() );
This means each module may have it's own conflict resolution strategy. Some may want more traditional lifo execution, but anything else is possible. Such as rule definition order, or async execution. Listeners can be combined, but that means that order IS important. Some listeners may want to preevent a rule from firing, others may want to prever other rules from firing after the current rule has fired.

Async rule execution

Fire each match asyncronously as it matches.
onMatch + { asyncFire( match ); }

Manual Interaction Agenda

Because the listeners are now fully pluggable and whether a rule fires or does not, or is cancelled is fully pragmatic it is possible to just expose the Module via an interactive GUI and the end user can see the conflict set and specify which rule(s) to fire.

As WME actions occur the users GUI will be updated showing the active matches, however none will fire without user selection. This means the user can interrogate the state of each Match and the fact it contains to select whch rules to fire. The user can also see dormant matches and "refresh" them so they can become available for firing again.

This could be taken a step further where a user sees a dash board of modules and all are inactive and the user can manually activate modules they wish to see evaluated.

Simulating existing rule execution behviours

activation-group plus variance

Other rule attribute behaviours can be implemented by combining listeners, although listener order is obviously important. For instance this listener can be added AFTER the agenda listener, and it simulates the existing "activation-group" behaviour, such that only the first activation fires for a conflict.
activation-group
onMatch += { 
module.cancel(); // cancels all other matches
}
We could do a variance on this that fires the first 3 activations, and cancels the rest
onEnter += { count = 0 } // count is a module member variable
onMatch += {
if ( count++ == 3 ) {
module.cancel(); // cancels all other matches ]
}
}

ruleflow-group

ruleflow-group behaviour is very simple to simulate. jBPM injects a trigger member variable, that on exit calls telling jBPM to trigger the next nodes in the flow, which may be ruleflow-group nodes or other jBPM nodes
onEmpty { module.stop() } // stopping the module causes onExit to fire
onExit + {
node.triggerCompleted()
}

agenda-groups

agenda-groups implement a push/pop stack behaviour. Only the stack tip executes, the others are considered "halted". To acehive this the consequence of any rule needs to call the following three methods:
module1.halt();
module2.onExit += { module1.resume() };
module2.call();
So that halts the current module and executes "pushes" the next module, when that module finishes "pops" the caller is resumed.

Simulating agenda-filters
If a match is cancelled, and made dormant it is not propagated to the next listener in the onMatch event.
onMatch += {
if ( <boolean expr> ) {
module.cancel( match );
}
}

Events as facts

Events are also inserted as facts, so can be matched in rules too. Member variables are fields on the events
rule  activationGroupVariance when 
m : OnMatch( count < 3 )
then
m.count++
end

Parent Modules and Module Scoping

Modules can contain sub modules, they can ony be called from within the scope of the parent module.Sub modules will have access othe parent modules member variables and parameter variables.

Module Reuse and Extension

A module can extend other modules. The exact semantics of this will need a lot more extensive though, but i'll outline something to get started. When a module extends another module it effectively copies the definitions of all the contained rules.However those rules will match and fire completely indepedantly of the source.

Macro's to abstract module configuration

All this manual configuration would become very cumbersome to the end user, and potentially far too complex. The idea is that all the above complexity is for power users, this is then encapsulated via macro's for end users. I don't intend to outline a Macro system for Drools yet, as that is a different subject in itself and will need a lot of though. For now I'll use <macro "name">, pontentially these can be listed. But how macro's are defined and applied are completely open to debate. These macro's are then expanded at complie time to provide all the required listener behaviour:
Module xxxx 
macro activationGroup( "g1" )

module xxx
macro agenda module xxx
macro agenda activationGroup( "g1 )

module xxx
macro default

by Mark Proctor (noreply@blogger.com) at December 20, 2011 10:40 AM

Drools & JBPM: Drools 5.4.0.Beta1 released

We're happy to announce the release of Drools (Expert, Fusion, Planner, Guvnor) 5.4.0.Beta1.

Beta1 finally introduces the simulation and testing work that we've been talking about for so long. This will provide a unified environment for simulation and testing over time for rules, workflow and event processing. Beta1 also demonstrates our continued effort to fully commodotise the decison table paradigm, using the excellent research provided by Jan Vanthienen's Prologa project, some high lights for the decision table improvements are listed below.
  • Limited and Extended entry wizards
  • Automatic decision table generation to expanded form
  • Improved rule templating flexibility
  • Work Item integration (declarative lazy environment bound functions)
  • Impossible Match detection
  • Conflict Match detection

Documtation, Release Notes and Downloads are detailed below:

Try it out and give us some feed-back (user list, issue tracker).

by Toni Rikkola (noreply@blogger.com) at December 20, 2011 10:15 AM

December 19, 2011

Drools & JBPM: Dynamic typing in rules : Traits (part 2)

In a previous post, we discussed the experimental feature called "traits", a way to combine strong and weak typing in Drools. A trait is an interface which can be attached ("donned"), even temporarily, to a fact. It is particularly suitable to model roles or temporary behaviors. Let's take, for example, the following fact model:


declare Person
@Traitable
code : String
name : String
address : String
balance : long
registerDate : Date
orders : Collection
end

declare OrderItem
@Traitable
itemId : String
price : long
end


declare HasDiscountApplied
@format(trait)
discount : long
end


declare Customer
@format(trait)
code : String
balance : long
registerDate : Date
orders : Collection
end

declare GoldenCustomer extends Customer, HasDiscountApplied
@format(trait)
maxExpense : long
end

declare SeniorCustomer extends Customer, HasDiscountApplied
@format(trait)
wasAwarded : boolean
end



A shop registers visitor to prepare special dedicated offers. When a visitor makes a purchase, they become Customers. For some reasons, the shop cares about Golden customers (those who spent more than a certain amount of money over the last year) and Senior customers (those who have been loyal for a certain time).
While some of the items on sale may have a discount, golden and senior customers always receive an (additional), personalized discount. Senior customers may even receive a public mention on the website, if they wish so.

The toy example is not accurate, but will serve to discuss some issues. Here, people and items are the only concrete domain entities: Customer, Golden and Senior are all statuses gained (or lost) by people according to some conditions. Likewise, being applied a discount is another transient property of customers and items.

We have seen previously that :


when
$p : Person( ... ) // some conditions apply
// exists Order( ... )
then
don( $p, Customer.class ) // a Customer proxy is insert
end


The proxy will allow to write rules against the fields defined by the Customer interface, but the getters/setters will be remapped internally to the concrete fields of the wrapped core object (the Person, in this case). Notice that, as a side benefit, using interfaces allows to exploit multiple inheritance.

Now, one might wonder what happens when a core class does NOT provide the implementation for a field defined in an interface. We call hard fields those trait fields which are also core fields and thus readily available, while we define soft those fields which are NOT provided by the core class. Hidden fields, instead, are fields in the core class not exposed by the interface.
In our example, code, balance, registerDate and orders are hard fields for Customer provided by Person. GoldenCustomer adds discount (from HasDiscountApplied!) and maxExpense, which are soft fields. Eventually, name is a hidden field.

So, while hard field management is intuitive, there remains the problem of soft and hidden fields. The solution we have adopted is to use a two-part proxy.
Internally, proxies are formed by a proper proxy and a wrapper. The former implements the interface, while the latter manages the core object fields, implementing a name/value map to supports soft fields. The proxy, then, uses both the core object and the map wrapper to implement the interface, as needed. So, you can write:


when
$sc : SeniorCustomer( $c : code, // hard getter
$award : wasAwarded == true // soft getter
)
then
$sc.setDiscount( ... ); // soft setter
end


The wrapper itself is exposed through the fields special getter available to all trait proxies. It is used to access soft fields as well as hard ones. The wrapper, in fact, mimics soft access to hard fields too, for uniformity.


$sc : SeniorCustomer( $name : fields[ "name" ],
$code : fields[ "code"],
$award : fields[ "wasAwarded" ] == true
)


The wrapper, then, provides a looser form of typing when writing rules. However, it has also other uses. The wrapper is specific to the object it wraps, regardless of how many traits have been attached to an object: all the proxies on the same object will share the same wrapper. Secondly, the wrapper also contains a back-reference to all proxies attached to the wrapped object, effectively allowing traits to see each other. To this end, we have provided the new isA operator:


$sc : SeniorCustomer( wasAwarded == true,
this isA "GoldenCustomer",
$maxExpense : fields[ "maxExpense" ]
)


This rule would be triggered by a SeniorCustomer, but propagated only if the fact is "also" ( i.e. the same core object also has donned the trait of ) a GoldenCustomer. The only possible disadvantage is that this type of cross-access requires loose typing, although if an explicit join is always possible thanks to the core field, again common to all traits:


$sc : SeniorCustomer( wasAwarded == true,
$core : core
)
$gc : SeniorCustomer( core == $core,
$maxExpense : maxExpense
)


Eventually, the business logic may require that a trait is removed from a wrapped object. To this end, we provide two options. The first is a "logical don", which will result in a logical insertion of the proxy resulting from the traiting operation:


then
don( $x, // core object
Customer.class, // trait class
true // optional flag for logical insertion
)


The second is the use of the shed keyword, which causes the retraction of the proxy corresponding to the given argument type:


then
Thing t = shed( $x, GoldenCustomer.class )


This operation returns another proxy implementing the org.drools.factmodel.traits.Thing interface, where the getFields() and getCore() methods are defined. Internally, in fact, all declared traits are generated to extend this interface (in addition to any others specified). This allows to preserve the wrapper with the soft fields which would otherwise be lost.

(Note: in addition to Thing, we also provide the class org.drools.factmodel.trait.Entity, an empty class with just an id and the data structures to make it @Traitable. We might rename it to Individual in the near future. And if this rings two bells to some of you, yes, the reason would be exactly that. Stay tuned.)

by Sotty (noreply@blogger.com) at December 19, 2011 01:13 AM

December 18, 2011

Drools & JBPM: New feature spotlight: Traits (part 1)

We all know that Drools is Java-oriented, so its fact model is object-oriented, in the sense of what Java makes of classes and objects. Leaving academic discussions out, let's focus on a great advantage and disadvantage: strong typing. Patterns and constraints have to be written against available classes and fields, and the compiler can check the consistency at load time so they can be correctly evaluated at runtime.

All well and good, save for a limitation: a fact, being an object, can have only one type hierarchy. Imagine you're building a business management application (policies? mortgages?): you'll likely need rules for employees and customers, but what if you want to write rules for special classes of customers? A few days ago, I was discussing a data validation application: what if you wanted to "tag" some facts as "invalid" or "inaccurate" and then write specific rules for them? In another example, we had a message-driven application, where we had to apply rules to the members of an organization according to the role they had in a message: sender vs recipient vs subject etc.... Take conan's adventure game: right now he has "hero" vs "monster", but soon he'll add classes, say fighter, mage, ... vs orc, undead, ...: what if he wants a fighter/mage to face an undead orc?

All these applications - and many more - have a common problem: the same fact (customer, employee, data sample, character) may have multiple dynamic types which do not fit naturally in a class hierarchy. Arguably, there are many possible solutions one could adopt, including:


  • Fit all classes in a hierarchy

  • Use labels (strings, enums, etc...) to model types

  • Write rules using interfaces

  • Use proxy facts




The first method is definitely not recommended. Java does not have multiple inheritance, so fitting a complex hierarchy in a simpler one might result in unnatural "isA" relations between classes.

declare Customer
// fields here
end

declare GoldenCustomer extends Customer
// more fields here
end


Even then, there is another problem here: imagine you have a Customer you want to promote to GoldenCustomer (which extends Customer). Probably, you'll have to clone your existing fact into an instance of the subclass, with a considerable effort to maintain consistency.

It seems much easier to model roles with strings or other marker objects:

declare Customer
roles : Collection
// more fields here
end


With this solution, one can add multiple types to a fact, but unfortunately those will just be labels, not types, so a change in type will not support a change in behavior. This means that any field which is relevant only for GoldenCustomers will have to moved up to Customer and constantly checked for consistency.

Roles are indeed modeled better using interfaces, which define the fields which should be visible when an object is observed from the point of view of that interface.

declare CustomerImpl implements Customer
// interface impl here
end


Forgetting that Drools does not support implements, which makes the previous snippet illegal, the problem here is that an interface is attached to a class and not to individual objects. So, our GoldenCustomer can't be an interface unless we want either all Customers to be golden ones, or we provide an implementation class for GoldenCustomers only, effectively going back to the first solution discussed.

A much better solution would be the use of proxy facts:

declare GoldenCustomer
customer : Customer
// more fields here
end


The idea is to create an additional fact, modelling the role that an object would have in the particular context. The obvious advantages of wrapping/decorating against cloning is that information is not replicated and, moreover, the role is applied to a particular fact (not to the entire class) and can be removed as needed. The price to pay is that, in order to write the rules, the user must refer explicitly the inner customer to access its fields. This also implies that the status of GoldenCustomer can be applied to instances of Customer only (think of more generic roles, which do not have a single domain, like Sender...)

In order to get the best of all these solutions, Drools now offers an experimental feature : traits

A trait is an interface that can be applied (and eventually removed) to an individual object at runtime.

To create a trait out of an interface, one has to add a @format(trait) annotation to its declaration in DRL:

declare GoldenCustomer
@format(trait)
// fields will map to getters/setters
code : String
balance : long
discount : int
end

import LegacyInterface;
declare LegacyInterface
@format(trait)
end


In order to apply a trait to an object, we provide the new don keyword, which can be used as simply as this:

when
$c : Customer()
then
GoldenCustomer gc = don( $c, Customer.class );
end


A few important remarks here. First of all, when a core object dons a trait, a proxy class is created on the fly (one such class will be generated lazily for each core/trait class combination). The proxy instance, which wraps the core object and implements the trait interface, is insert-ed automatically and will possibly activate other rules.
An immediate advantage of declaring and using interfaces, getting the implementation proxy for free from the engine, is that multiple inheritance hierarchies can be exploited when writing rules. The core classes, however, need not implement any of those interfaces statically, also facilitating the use of legacy classes as cores.
In fact, any object can don a trait. For efficiency reasons, however, one can add the @Traitable annotation to a declared bean class to reduce the amount of glue code that the compiler will have to generate. This is optional and will not change the behavior of the engine:

declare Customer
@Traitable
code : String
balance : long
end


Since the only connection between core classes and trait interfaces is at the proxy level, a trait is not specifically tied to a core class. This means that the same trait can be applied to totally different objects. (The problem of filling the LHS of a donning rule will be the topic of a next post...)
Notice that, for this reason, the trait does not transparently expose the fields of its core object. So, when writing a rule using a trait interface, only the fields of the interface will be available, as usual.
However, any field in the interface that corresponds to a core object field, will be mapped by the proxy class.

when
$o: OrderItem( $p : price, $code : custCode )
$c: GoldenCustomer( code == $code, $a : balance, $d: discount )
then
$c.setBalance( $a - $p*$d );
end


In this case, the code and balance would be read from the underlying Customer object. Likewise, the setAccount will modify the underlying object, preserving a strongly typed access to the data structures.

by Sotty (noreply@blogger.com) at December 18, 2011 08:37 PM

December 16, 2011

Drools & JBPM: Why programmers work at night

http://swizec.com/blog/why-programmers-work-at-night/swizec/3198

"....snip...

On the other hand you have something PG calls the maker’s schedule – a schedule for those of us who produce stuff. Working on large abstract systems involves fitting the whole thing into your mind – somebody once likened this to constructing a house out of expensive crystal glassand as soon as someone distracts you, it all comes barreling down and shatters into a thousand pieces.

This is why programmers are so annoyed when you distract them.

...snip...

Keep staring at a bright source of light in the evening and your sleep cyclegets delayed. You forget to be tired until 3am. Then you wake up at 11am and when the evening rolls around you simply aren’t tired because hey, you’ve only been up since 11am!

Given enough iterations this can essentially drag you into a different timezone. What’s more interesting is that it doesn’t seem to keep rolling, once you get into that equilibrium of going to bed between 3am and 4am you tend to stay there."



by Mark Proctor (noreply@blogger.com) at December 16, 2011 09:34 PM

Thomas Allweyer: Prozessmanagement in der Verwaltung – Schweizer Online-Forum

In der Schweiz gibt es eine sehr aktive Community, die das Thema Prozessmanagement als wichtige Voraussetzung für die Modernisierung der öffentlichen Verwaltung vorantreibt. Dies wurde auch kürzlich wieder auf dem BPMN Anwendertag in Luzern deutlich. Wer die Diskussion dieser Thematik verfolgen will, die nicht nur aus Schweizer Sicht interessant ist, sollte sich einmal das Forum zur Verwaltungsmodernisierung ansehen, das jüngst auf die Ning-Plattform umgezogen ist. Auch ein Blick in die Dokumente der eCH-Fachgruppe Geschäftsprozesse ist lohnenswert.

by Thomas Allweyer at December 16, 2011 11:21 AM

December 15, 2011

Drools & JBPM: Drools Developers get PAID MORE as demand QUADRUPLES!!!

Good news for those with JBoss Drools skills, your in demand!!! Latest results in the UK from itjobswatch.co.uk shows over a three times increase in demand for Drools jobs since Dec 2010. It doesn't take much to imagine where that curve is going to be in 2014.....

The report for this information can be seen here.

But it gets better the average salary in London over the last 3 months is £90K GBP that's around £140K USD. And note that's just the average, I know I've seen jobs over 100K GBP in London for Drools. The demand growth for Drools in London has quadrupled to a 4x increase in the same period as above:


Now lets compare this to the average Java developer, the report for that is here. The results are much more depressing, your demand as a java developer is shrinking, with salaries averaging just 55K GBP or 88K USD for London:

So if you are already a fellow Drools developer, congratualations and enjoy the finer things in life. If you aren't, what are you waiting for, now is the perfect time to dip your toes in - as someone famous once said "Because your worth it" :)

by Mark Proctor (noreply@blogger.com) at December 15, 2011 11:28 PM

Drools & JBPM: Using Work Items in rules' consequences

Recently I added the ability to use Work Items as function calls in the guided decision table editor in Guvnor. This highlighted that Work Items have always been available as function calls in DRL but this has not been well documented; leaving users to make the connection.

Various Work Item handlers are available "out of the (jBPM) box" in the org.jbpm.process.workitem package that may prove useful to rule authors. In addition Work Item Handlers providing bespoke services for all domain areas can be easily authored and plugged in.

I have added a couple of examples to drools-examples (in the master branch on github and to be included 5.4.0.beta1) that illustrate how to use Work Item handlers from the right-hand side of a rule: one simulates sending an email and the other provides a greeting service; the code for both residing in custom Work Item handlers.

I hope they provide a catalyst to encourage the use of Work Items in rules.

by Michael Anstis (noreply@blogger.com) at December 15, 2011 02:02 PM

December 14, 2011

Drools & JBPM: jBPM Form Builder follow-up

Greetings. There are a few items I will be adding to the Form Builder in the next few weeks, including the following:

Create user roles for different menu options
It’s important to have different roles with separate functions. Certain profiles, i.e. web designer, could edit any visual component. However, a functional analyst might need to have limited visual components, previously approved by a web designer. At first, these are the profiles in mind:

  • web designer: Can define any customized visual component
  • functional analyst: Can use any customized visual component

Create visual asistants for script development on visual components specific events
Profiles that will use the form builder, at least to begin with, shouldn’t need scripting knowledge to understand what to do on specific visual events or how to handle them. That’s why a series of visual helpers should allow a user with very few technical knowledge of scripting to define behaviour for certain visual events like onClick, onChange, and so on.

Guvnor and jBPM console interaction
I will change current jBPM console interaction to use a specific API exposed by the form builder. Currently we publish specific FTL files in guvnor every time we save a form definition, making it unnecessary to change it. This option, however, could be improved, in order to provide different language options. Here's an example view of one of them:

Instalation scripts
Currently I’m working on expanding the jbpm installer to have the form builder included in it.


Also, we expect to have this as an available module by next release (5.3) If everything goes well, everyone will have this tool pretty soon

Cheers,

Mariano

by Marian Buenosayres (noreply@blogger.com) at December 14, 2011 08:33 PM

December 12, 2011

Drools & JBPM: jBPM 5.2 released

The team is proud to present the next release of jBPM. jBPM is an open-source business process engine, supporting BPMN2. I think we have a few very nice new features in this release, with for example
A full list of features is added below.

You can download the artefacts here.
Documentation can be found here.

To get started, it is probably best to download the full installer and follow the installer documentation, to guide you through the tools with a simple example. You can also import the examples module to have look at the numerous examples included in there.

We'll be updating some of the documentation and adding some quick starts and more examples in the next few weeks, so stay tuned!

Have fun!


Release notes

On top of some optimizations, bug fixes and small improvements, these are the most important new features in jBPM 5.2.0.Final.

Core engine
  • domain-specific service repository: the ability to import domain-specific services from a repository so you can immediately use them in your processes, e.g. twitter integration, FTP, web or REST service, etc. This is ideal for non-technical users to integrate with external services
  • improved persistence support for multiple databases and backwards compatibility
  • jbpm-test: new module that offers improved support for JUnit testing of processes, including the automatic setup of the necessary datasources and services on the fly
  • support for Java7

Installer

  • added support for JBoss AS7, which is now used as the default application server in the jbpm-installer

Web-based designer
  • Integration with the domain-specific service repository
  • Visual Process Validation: new features allows users to visually validate their processes at edit time
  • Ability to view the process in ERDF, JSON, PDF, PNG, BPMN2, and SVG formats
  • New Process Information section: contains information about the process, such as name, creation date, version, etc
  • jBPM 3.2 Process Migration: new feature allows users to migrate existing jBPM 3.2-based processes to BPMN2
  • Ability to import existing bpmn2 processes straight into designer
  • Ability to create "sharable" process image, PDF, and ability to generate code for embedding designer in custom applications
  • Support four boundary events
  • Visual support for Text Annotations, Groups, and Lanes
  • Support for sub-processes
  • Update to latest Guvnor

Human task service
  • introduction of the task service interface, and interface to interact with the (default) human task service (independent of the underlying communication pattern and technology)
  • user group callback: easily integrate with your own service for user / group validation and user-group-management (which users are part of which groups)
  • local task service: a local implementation of the task service that runs locally, next to the process engine, and (re)uses the same transaction of the core engine
  • human task service war: deploy the human task service as a service on your application server

jBPM console
  • updated to latest version of the JBoss BPM console
  • console synchronizes with the process definitions (and other assets) from all packages in the Guvnor repository
  • updated BIRT reporting to latest version

Eclipse plugin
  • jBPM perspective: Eclipse perspective that simplifies workspace configuration
  • more advanced jBPM project wizard

by Kris Verlaenen (noreply@blogger.com) at December 12, 2011 10:34 PM

December 11, 2011

Tom Debevoise: Ten Business Rules Usage Patterns in BPM and Business Events

In my opinion, Progress Software's acquisition of Corticon marks the beginning of the end of the monolithic ‘rules-engine’. The idea that there is a business rules engine that is ‘called’ by a ‘program’ is past and there is a more nuanced understanding of the role of business. By my estimate there are at least 10 separate usages of business rules within business processes and business events.

Firstly, business rules play an important role in the rules-driven process pattern. The common monolithic conception of business rules is that it is only an element of a decision that affects the gateways of one process.
There are various opinions about this and certainly I have mine. Yet, it as the BPM industry matures it is probably wise to use more standard research methods to develop an approach. Researchers at Georgia State University and Utrecht University have identified five categories of business rules that have a behavioral influence on the business process in terms of mitigating operational risk or achieving compliance to regulation.
The five usage categories are:

  1. Rules for task sequencing
  2. Rules for actor inclusion or task assignment
  3. Rules for effect sequencing or gateway conditions
  4. Rules for data / information registration
  5. Rules for detection control or event reponses

Briefly, these five usage categories are described:

Task Sequencing: these rules influence the position of one or multiple activities/events/decision (hence process elements) within a business process.  Most often, to create a process that is compliant with the business rules, process elements are simply added, re-ordered or removed. That is, the existing process model is updated to reflect the new rules.

Actor Inclusion/Interaction or Task Assignment: These are rules that influence the assignment of tasks or decision to specific actors. There are several approaches to creating a complaint process. Firstly, defined actors, in the form of participants, can be removed/added or appointed to different elements inside the process. In addition, a processes can call business rules to delegate the activity to the correct actor.

Effect Sequencing or Gateway Conditions: These rules influence the paths chosen by gateways or conditional sequences inside the process. This is the classic pattern of the values, created by the rules, setting the conditions at gateways and directing the flow of the process. That is: the path chosen is directed by an evaluation of business rules associated with individual transaction. This is more dynamic than task sequencing where rules influence the arrangement of the paths.  An example of effect sequencing is a shipping process where, depending on the needs of the shipment, different transportation process activities need to be executed. This is the most common perception of processes and rules. To make the process compliant, business rules need to be enforced during runtime.

Data / Information Registration or Event Responses: These rules influence the recording and viewing of data and information, and the authorization to access it. Most often, to create a process that is compliant with the business rules, internal controls govern timing: how long must the recorded data be kept accurate and the predefined format of complete or registered data. That is: the registered data must contain the following information and authorization, restricting access to predefined user and roles.

Detection Control or Event Reponses: These rules influence how a process responds to events. Events can be external or internal. External events might include weather, or financial events. Internal events arise from the direct or audited results of an activity or processes.  Most often, to create a process that is compliant with the business rules multiple solutions can be used: process elements can be added, reordered or removed, we can have the process respond to an ‘event channel’ or, a new business process can be created to perform the event control.

The last type can be expanded further. Business Events open another set of 5 patterns for business rules. In the Microguide we defined several classes of decision for event processing. These usually occur in the following order: 

  1. Detection, 
  2. Distribution, 
  3. Aggregation 
  4. Correlation 
  5. Assignment

Not every event processor includes all of these steps. Also, after detection, it is not required for these steps to be executed in this order. The list shown is ideal, in theory, for all event processing situations.

Detection: In event detection, logic is applied to data monitored by the event detector. A business-relevant or ‘event-of interest’ is discovered when the event process matches the logic with the data.

Distribution: In event distribution, the detected event is immediately alerted to the affected process or systems, according the logic and levels of participation. Rules logic decides the level of involvement and the destination of the distributed event. Distribution logic can simplistic, as in a burglar alarm during irregular hours. Complex distribution logic might deliver the event based on the scale of the data within the event.
Events are distributed through two distinct patterns; either through a message, or a broadcast. The message corresponds to the BPMN message. Event processing targets the event activated messages at a process instance. The broadcast distribution method is denoted as a signal event in BPMN, and is analogous to a radio signal.  While a message persists after it is sent, a broadcast is only relevant for a short period of time.

Aggregation: Many business events are only meaningful in combination with other events of a similar or related nature. Logical significance might arise from the timing or temporal nature of the other events. In aggregation, event processing uses business rules logic to identify significant events from a group of events.
Correlation: Event processing includes a correlation step. Event processing can play a role, by detecting internal or external events and correlating these with concurrent processes or data in the enterprise. Active business processes might be identified as intended recipients. Business rules define what data or process states are included in the correlations and the logic of the match.

Assignment: At the conclusion of the cycle, in assignment, the event is assigned to one or more processes. Business rules can choose which process is assigned the event for action. As with all rules, the assignment can be as straightforward as the unconditional assignment to a single process or it can be a time, capability and dependent assignment.

An example of this is shown in the figure below:

Process modelers and business decision modelers use the three metaphors of business processes, business rule and business events these to model solutions. In early incarnation of the business rules engine, the BRMS was built as a separate engine to be included in a batch or separate process. Our understanding of the use of business rules has become more nuanced and more focused on the intended usages. If you model your processes with these rules your rules will be more focused and more compact.

Tom Debevoise

 

by Tom Debevoise at December 11, 2011 11:15 PM

December 10, 2011

Saperion.com (BPM related posts): Best Practice: Zusammenspiel von Signavio und SAPERION aus Sicht des Qualitätsmanagements

Bisher habe ich darüber geschrieben, wie mit dem Signavio Process Editor erstellte Prozessmodelle nach SAPERION übergeben werden können, um hier direkt mit unserer Workflow Engine ausgeführt zu werden (siehe u.a.SAPERION und Signavio auf dem Weg zum BPM Round-Trip Engineering). In der letzten Zeit kommen verstärkt die Nachfragen, dass für den Anwendungsbereich des Qualitätsmanagements eine umgekehrtes [...]

by Dr. Martin Bartonitz at December 10, 2011 12:39 AM

December 09, 2011

Drools & JBPM: Machine reassignment for Google ROADEF/EURO Challenge 2012

Drools Planner has a new example: machine reassignment.

Problem statement
Assign each process to a machine. All processes already have an original (unoptimized) assignment. Each process requires an amount of each resource (such as CPU, RAM, ...). This is more complex version of the Cloud balancing example.

The problem is defined by the Google ROADEF/EURO Challenge 2012.

Hard constraints:
  • Maximum capacity: The maximum capacity for each resource for each machine must not be exceeded.
  • Conflict: Processes of the same service must run on distinct machines.
  • Spread: Processes of the same service must be spread across locations.
  • Dependency: The processes of a service depending on another service must run in the neighborhood of a process of the other service.
  • Transient usage: Some resources are transient and count towards the maximum capacity of both the original machine as the newly assigned machine.
Soft constraints:
  • Load: The safety capacity for each resource for each machine should not be exceeded.
  • Balance: Leave room for future assignments by balancing the available resources on each machine.
  • Process move cost: A process has a move cost.
  • Service move cost: A service has a move cost.
  • Machine move cost: Moving a process from machine A to machine B has another A-B specific move cost.
Problem size
model_a1_1: 2 resources, 1 neighborhoods, 4 locations, 4 machines, 79 services, 100 processes and 1 balancePenalties with flooredPossibleSolutionSize (10^60).
model_a1_2: 4 resources, 2 neighborhoods, 4 locations, 100 machines, 980 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^2000).
model_a1_3: 3 resources, 5 neighborhoods, 25 locations, 100 machines, 216 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^2000).
model_a1_4: 3 resources, 50 neighborhoods, 50 locations, 50 machines, 142 services, 1000 processes and 1 balancePenalties with flooredPossibleSolutionSize (10^1698).
model_a1_5: 4 resources, 2 neighborhoods, 4 locations, 12 machines, 981 services, 1000 processes and 1 balancePenalties with flooredPossibleSolutionSize (10^1079).
model_a2_1: 3 resources, 1 neighborhoods, 1 locations, 100 machines, 1000 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^2000).
model_a2_2: 12 resources, 5 neighborhoods, 25 locations, 100 machines, 170 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^2000).
model_a2_3: 12 resources, 5 neighborhoods, 25 locations, 100 machines, 129 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^2000).
model_a2_4: 12 resources, 5 neighborhoods, 25 locations, 50 machines, 180 services, 1000 processes and 1 balancePenalties with flooredPossibleSolutionSize (10^1698).
model_a2_5: 12 resources, 5 neighborhoods, 25 locations, 50 machines, 153 services, 1000 processes and 0 balancePenalties with flooredPossibleSolutionSize (10^1698).

Results
The implementation is still pretty basic, I wrote it in about 5 Sundays (including tweaking). These are the results:


The schedules found by Drools Planner (after only 5 minutes) are on average 27% better than the original schedules.

Open Science
In the name of Open Science and Open Source, all my work was public from day one (as people who follow me on Google+ or GitHub will have seen). I hope that researchers who work full-time on these sort of competitions start doing the same.


Qualification phase 1 has just ended. It has been an interesting competition so far: it has given me a good insight on the strengths and - more interestingly - the weaknesses of Drools Planner. Expect those weaknesses to be improved in future Drools Planner versions :)

by Geoffrey De Smet (noreply@blogger.com) at December 09, 2011 09:39 AM

December 08, 2011

Drools & JBPM: Drools & jBPM at ICAART (Portugal) 4th International Conference on Agents and Artificial Intelligence


Droosl & jBPM @ ICAART 2012 is now confirmed, and myself (Mark Proctor) and Dr Davide Sottara will be there. If you have any interesting research on or with Drools & jBPM that you would like to present on the day, let us konw.
6-8 Febuary 2012
Vilamoura, Algarve, Portugal
http://www.icaart.org/tutorials.asp

The day is a tutorial day aimed at all levels. It will start with general introductions to the technology but will slant off to more of our research based projects such as Drools Semantics and Chance, as it's part of an academic conference. We would also like to give an opportunity for the people to present their own research, slots can be anything from 20minutes to 60 - contact me if you are interested mproctor at codehaus d0t org.

There will also be plenty of time for discussions and help with your own projects.

Abstract

Drools is the leading open source, industry focused, rule engine. While Drools started life as a Rete based forward chaining engine, it has since transcended. It's ongoing mission is to explore declarative paradigms from a practical and industrial perspective, to boldly go where no engine has gone before.

The tutorial will start with a gentle introduction, suitable for all level of expertise, covering the core language and functionality slowly expanding into more complex areas. The topics covered include, but are not limited to:

Basic Concepts:

  • Patterns, Constraints and Unification
  • Data Driven and Goal Oriented Inference using Forward Chaining and (Opportunistic) Backward Chaining
  • Truth Maintenance
  • Temporal Reasoning and Complex Event Processing
  • Functional Programming
  • Traits and Declarative Models
Advanced Topics:
  • Decision Tables
  • Rule and Workflow Integration
  • Hybrid Rule-Based Systems
  • Agents and Services
  • Unified Testing

Brief biography of Mark Proctor

Mark Proctor received his B.Eng in Engineer Science and Technology and then his M.Sc. in Business and Information Systems; both from Brunel University, West London. His M.Sc. thesis was in the field of Genetic Algorithms; which is where he discovered his interest for anything AI related.


Mark became involved in the Drools expert system project at an early stage and soon became its project lead. Mark then joined JBoss (later acquired by Red Hat) as an employee when the Drools project was federated into the JBoss middleware stack.
Mark now leads the effort at Red Hat for a unified platform for declarative technologies; with a focus on rules, event processing, workflow, semantics, distributed agents and governance.

Brief biography of Davide Sottara

Davide Sottara received his Ms. Degree in Computer Science(2006) and his Ph.D (2010) in Computer Science, Electronics and Telecommunications from the University of Bologna.
His research and development interests include Artificial Intelligence in general and Decision Support Systems in particular, focusing on hybrid systems combining predictive models and rule-based systems.

Since 2006, he has been working on the development of intelligent DSSs in the environmental and medical field. He is a member of the Drools open source Community, leading a sub-project on the extension of production rule engines to support hybrid and uncertain reasoning, and he's also involved in the RuleML rule language standardization initiative. He is currently working on remote health-care systems enhanced with AI-based predictive, diagnostic and planning features.

Contacts

e-mail: icaart.secretariat@insticc.org

by Mark Proctor (noreply@blogger.com) at December 08, 2011 03:13 PM

Sandy Kemsley: Q&A From Making Social Mean Business

TweetWe had a few unanswered questions left from our webinar on Tuesday, so I’ve included the ones that were not related to Pega’s products below, with answers from both Emily Burns and myself:...

[Content summary only, click through for full article and links]

by Sandy Kemsley at December 08, 2011 01:43 PM

December 07, 2011

Drools & JBPM: Drools&jBPM at ICAART 4th International Conference on Agents and Artificial Intelligence



We have a tentative full day tutorial for Droosl & jBPM in Portugal, Algarve, during Febuary the 6 - 8. I'm just waiting for internal confirmations, but I wanted to start getting prelimary communication out there.

http://www.icaart.org/tutorials.asp

ICAART will cancel the conference if attendance is not high enough, so if you are thinking about attendending, register your interest quickly.


Mark

by Mark Proctor (noreply@blogger.com) at December 07, 2011 04:47 PM

Thomas Allweyer: Leitfäden für das Enterprise Architecture Management

Das gerade erschienene Buch “Enterprise Architecture Management – einfach und effektiv” von Inge Hanschke trägt den Untertitel “Ein praktischer Leitfaden für die Einführung von EAM”. Das verwundert zunächst ein wenig, denn erst vor eineinhalb Jahren hat dieselbe Autorin die zweite Auflage eines Buchs mit dem ganz ähnlichen Untertitel “Ein praktischer Leitfaden für das Enterprise Architecture Management” veröffentlicht. Und in der Tat gibt es eine Reihe von Inhalten, die in beiden Büchern vorkommen. Welches der beiden Bücher sollte man lesen? Kann es sich trotz der Überschneidungen lohnen, beide Bücher zu lesen?

Der eigentliche Titel des zuerst erschienenen Buchs mit dem blauen Cover, “Strategisches Management der IT-Landschaft”, deutet bereits darauf hin, dass das Themengebiet etwas weiter gefasst ist. Zwar steht das Enterprise Architecture Management (EAM) im Mittelpunkt, doch finden sich darüber hinaus auch Kapitel zur strategischen IT-Planung, zur konkreten Gestaltung der Informationssystem-Landschaft durch das IT-Bebauungsmanagement und zum Technologiemanagement, d. h. der Beobachtung und Nutzung neuer technologischer Entwicklungen. Zwar bietet es, wie der Untertitel verspricht, viele praktische Hinweise und Handlungsempfehlungen, doch liegt der Fokus im Vergleich zum neuen Buch stärker auf einführenden Erläuterungen und dem Gesamtzusammenhang im Rahmen des IT-Managements.

Das neu erschienene Buch mit der grünen Titelseite, “Enterprise Architecture Management – einfach und effektiv”, folgt noch konsequenter der Idee, einen Leitfaden für den Praktiker bereitzustellen. Kurz gesagt sollten Einsteiger und Leser, die den EAM-Ansatz von Hanschke kennen lernen wollen, zum blauen Buch greifen. Wer selbst für das EAM im Unternehmen zuständig ist, für den stellt vor allem das grüne Buch eine umfangreiche Fundgrube konkreter, praxiserprobter Anleitungen und Empfehlungen für die eigene Arbeit dar.

Zweck einer Unternehmensarchitektur (Enterprise Architecture) ist es laut Hanschke, eine gesamthafte Sicht auf das Unternehmen zu schaffen. Hierbei werden fachliche und IT-Strukturen festgelegt und miteinander verknüpft. Es entsteht eine gemeinsame Sprachbasis zwischen Business und IT. Beide Bücher haben dabei einen deutlichen IT-Fokus, d. h. Themen wie organisatorische Maßnahmen für Prozessverbesserungen werden nicht behandelt. Auch die vorgestellten EAM-Modelle enthalten zwar Informationen über die Geschäftsprozesse des Unternehmens, doch nur soweit diese direkt für das IT-Management von Bedeutung sind.

Im Folgenden wird das grüne Buch – der neu erschienene EAM-Einführungsleitfaden – näher vorgestellt. Zunächst wird EAM als zentraler Baustein des strategischen IT-Managements eingeführt. Es sorgt für Transparenz, stellt eine gemeinsame Basis für das Business-IT-Alignment zur Verfügung und unterstützt die strategische Planung und Steuerung der IT, etwa durch Vorschläge für die Soll-Bebauung oder eine IT-Roadmap. Recht ausführlich werden die Nutzenpotenziale des EAM diskutiert. Sie bilden die Basis für einen Argumentationsleitfaden, mit dem die Unternehmensführung von der Einführung des EAM überzeugt werden soll.

Der von Hanschke entwickelte Best-Practice-EAM-Ansatz konsolidiert die Erfahrung aus vielen Projekten. Im Gegensatz zu anderen Frameworks, wie z. B. dem Zachman Framework oder TOGAF (The Open Architecture Framework), die recht abstrakt sind und eher die Grundlage zur Entwicklung einer unternehmenseigenen EAM-Methode darstellen, ist das Best-Practice-EAM pragmatischer und kann direkt eingesetzt werden, u. a. dank einer Reihe von Schritt-für-Schritt-Anleitungen.

Best Practice EAM besteht aus:

  • Best-Practice-Unternehmensarchitektur: Sie setzt die wesentlichen Elemente aus Business und IT in Beziehung zueinander, wie z. B. Prozesse, Geschäftseinheiten, Geschäftsobjekte, Informationssysteme, Schnittstellen usw. Damit bildet sie das Fundament des Ansatzes.
  • Visualisierungen: Die Inhalte einer Enterprise Architecture können auf ganz unterschiedliche Weise visualisiert werden, z. B. in Form von Portfolio-Grafiken, Bebauungsplänen oder Roadmaps.
  • Analyse-Muster dienen der Identifikation von Handlungsbedarf und Optimierungspotenzial der IT-Landschaft.
  • Stakeholder-Gruppen und -Sichten helfen den konkreten Informationsbedarf der relevanten Zielgruppen zu erfüllen.
  • Einsatzszenarien: Für zahlreiche Einsatzszenarien im operativen und strategischen IT-Management sowie bei der Weiterentwicklung des Geschäfts wird beschrieben, welche Bestandteile des EAM-Ansatzes wichtig sind und wie sie dafür eingesetzt werden.
  • Methode und Muster für die strategische Planung der IT-Landschaft: Im Fokus stehen hierbei vor allen die Bebauungsplanung der IT-Landschaft und die technische Standardisierung.
  • EAM Governance umfasst Rollen, Verantwortlichkeiten, Regeln und Prozesse zur Pflege und Weiterentwicklung der Unternehmensarchitektur.
  • Vorgehensweise für die EAM-Einführung und Weiterentwicklung

Die genannten Aspekte werden ausführlich und praxisorientiert dargestellt, so dass man die beschriebenen Vorgehensweisen direkt umsetzen kann. Insbesondere für Praktiker dürfte das Buch wesentlicher nützlicher sein als die meisten anderen Veröffentlichungen und die gängigen Frameworks zum EAM. Selten wird EAM so konkret und fassbar dargestellt wie bei Hanschke. Freilich ist auch Best-Practice-EAM recht umfangreich und wirkt beim ersten Durchlesen etwas komplex. Sicherlich hilft es, den Rat der Autorin zu befolgen und nur die tatsächlich benötigten Inhalte soweit auszuarbeiten, wie sie zur Beantwortung der konkret im Unternehmen wichtigen Fragestellungen erforderlich sind. In vielen Fällen wird man mit vergleichsweise abgespeckten Modellen auskommen.

Ein umfangreicher, als Download erhältlicher Anhang liefert weitere detaillierte Muster, Hilfestellungen und Modellierungskonventionen. Wer sich für die Bücher von Inge Hanschke interessiert, sollte sich auch einmal die EAM-Software iteraplan ansehen, die auf dem Best-Practice-EAM-Ansatz beruht. Man kann sie direkt online ausprobieren oder sich die kostenfreie Community-Edition herunterladen.

Für 2012 sind zwei weitere Bücher von Inge Hanschke angekündigt, die die betriebswirtschaftliche Ebene im Fokus haben. Das eine behandelt das strategische Prozessmanagement, das andere die Business-Analyse. Man darf gespannt sein.


Inge Hanschke:
Strategisches Management der IT-Landschaft.
Ein praktischer Leitfaden für das Enterprise Architecture Management.
2., erweiterte Auflage.
Hanser 2010.
Das Buch bei amazon.

Inge Hanschke:
Enterprise Architecture Management – einfach und effektiv.
Ein praktischer Leitfaden für die Einführung von EAM.
Hanser 2012.
Das Buch bei amazon.

by Thomas Allweyer at December 07, 2011 04:27 PM

December 06, 2011

BPMN.info: Hallo Welt!

Willkommen zur deutschen Version von WordPress. Dies ist der erste Artikel. Du kannst ihn bearbeiten oder löschen. Um Spam zu vermeiden, geh doch gleich mal in den Pluginbereich und aktivier die entsprechenden Plugins. So, und nun genug geschwafelt – jetzt nichts wie ran ans Bloggen!

by admin at December 06, 2011 01:56 PM

Saperion.com (BPM related posts): Another Business Rule Engine Vendor is taken over

One after another Business Process Management Suite vendor ist bying a Busines Rule Engine vendor to complete their suite. Yesterday Progress Software announced the akquisition of Corticon which I have seen on Gartner´s BPM Summit in the beginning of this year: Dr. John Bates, chief technology officer, Progress Software said: “Within modern responsive businesses, the [...]

by Dr. Martin Bartonitz at December 06, 2011 06:55 AM

December 04, 2011

Keith Swenson: Flipping the Process Life Cycle

It is a simple idea, but one of those key differences that makes all the difference.  We all know the traditional process life cycle: design the process, automate it, measure performance, and cycle around to improve the design. Instead, we should completely throw the old process life cycle.  Don’t design a process, but instead give people a tool they use to get work done.  Then, after the fact, we look and see what the process was.

Traditional Process Life Cycle

The traditional process life cycle for BPM has been set out in a very definite form.  We start by designing a process — maybe laying out the boxes on a flow diagram.  We interview people, and ask them what they think the process is. Or maybe we use a tool to allow business people to collaborate directly on describing the process.  Implementation then starts, and that can either be a model preserving strategy where the process diagram is interpreted directly, or it is somehow transformed to an executable form.  The completed application is tested in the standard manner, and finally deployed into actual production use.

After deploying, we can switch to a number of different tools to monitor and measure the success of the process, like process analytics, history, or even just simply asking the users where the process is working, and where it does not. We use that insight to improve the process, and after testing, the improved application is deployed to production.

This is not just the BPM life cycle; everyone in the IT department knows this is right and proper way to make an application or solution of any type.  BPM offers some special capabilities through more powerful tools, but the life cycle is the same.

Flipping the Life Cycle stands this Approach on its Head.

Step 1: deploy the system into production with real users.  There is no need to develop an application or a solution, they simply start using it.  The system itself is useful without any modification, the same way that telephone or email are useful without building an application.

Step 2: After it has been in use for a while, use process mining to see what the process has been.  Process mining gives you an aggregate picture across an organization of any size, picking out the most common processes, and the exceptions.   You have access to metrics telling you how long workers spent in any given step.  It can show you what percentage of the time the work proceeded done one path, or down another.  From this you understand how to improve the work of the organization.

Flipping the life cycle is an extension to the basic Adaptive Case Management (ACM) pattern.

Why Flip the Life Cycle?

Flipping the life cycle is a useful technique in a number of situations:

  • The process is too vast to automate.  Consider a patient today interacting with a healthcare supplier.  There are literally thousands of reasons that a person might need to interact with a doctor today.  It is simply not possible to ask everyone to stop getting healthcare until we have had time to automate every possible interaction.  While parts of this interaction is being ever more automated, but  show must go on, and it will be a long long time before that job is complete.
  • The work is too complex to automate.  You think that it is impossible for a process to be too complex?  You think that a programming language can handle any degree of complexity?  Tell that to someone who is negotiating the merger of two companies.  The complexity is great, and even the number of factors have not been enumerated.  Case managers are doing these job today, and they will not be automated any time soon.
  • The work is too unpredictable.  Anyone who has followed my writings has seen plenty of examples of processes that are done only once, and then thrown away.  The board of directors that asks a company to shift the focus of a product line in a new direction, or to consolidate two different departments into one.  It simply is not economical to automate processes that are different every time.
  • The work requires a person who has specific knowledge to that specific particular situation.  These are what Jacob Ukelson calls a knowledge process, and they do not have the same characteristics as routine business processes.

Flipping the process life cycle avoids the up-front expense and lock-in to a suboptimal path while at the same time gives you many of the advantages of being able to measure the process performance, and find ways to improve the work.

What Difference Does It Make?

With Adaptive Case Management (ACM), we often say there is no life cycle to mean that there is no separation between design and doing.  There is no distinction between the development environment and the run time environment.  Planning is part of doing.  In fact, you don’t really design a process, you really just plan your work.  Planning is somewhat like process design, but it is very much less like programming, and a lot more like communicating.

Planning for knowledge work has to be done by knowledge worker themselves, without specialized skill in designing processes.  The doctor himself plans the treatment.  The detective herself plans the investigation.  These people are specialists in their field, but have no special skills in process design.  ACM must not require specialized process skills.

Note that the traditional process life cycle enables different technical specialists to be involved at different times: at the very beginning high level requirements are drawn up by the business owner; then business workers help define the process; then the process specialist (a.k.a. process analyst) figures how best to express this as the process model; then developers and testers may be involved in crafting the application, forms, data persistence; finally an administrator will deploy and manage the final application.  The fact that you have specialists for process support means that you can have much more specialized tools, and that drives a kind of arms race of features for more powerful process support.

I have nothing against powerful tools for developing applications, but they quickly become so specialized that a typical doctor, policeman, lawyer, judge, or nurse can no longer use them effectively.  The highly specialized tools distance the knowledge worker from the planning activity.

Many knowledge workers will plan and complete their own work. They are evaluated by the normal means: satisfied clients and financial measures.  When warning signs appear, managers of large organizations will want to know more about what is going wrong.  Post facto process mining gives those managers many of the benefits of a rigorous process: they have visibility to what has been working well, and they have a visual representation of why particular processes did not go well.

The traditional life cycle introduces a delay between the design of the process, and the actual use of the process.  This is not a technical delay, as most BPM vendors will show you one-button deployment that can put a process on-line in seconds.  Instead the delay is caused by more mundane reasons having to do with approvals, sign-offs, testing, debugging, and simply manpower available to do the improvement.  By flipping the order of these, and you can actually compare the work with a process that was designed after the work was done.

If you think about this last idea it is really amazing:  If your process lasts years, you can monitor progress, and discover practices from ones going well, and then apply those practices to other cases — even when those techniques were not known when the work was started.


by kswenson at December 04, 2011 11:44 PM

Keith Swenson: What the Process Mining Manifesto means to ACM

The IEEE Task Force on Process Mining has just released the Process Mining Manifesto.  This the single best, most concise description of what process mining is, and what this revolutionary new technology might bring about.

Background

Process mining is the scanning historical records of activity in order to determine the process that had been used.  A process is simply a sequence of actions.  Process mining uses recorded evidence of many such sequences to give you a picture of the typical path and exceptional paths as well.

Research on this field started in the mid 1990′s.  This means it is still a relatively young field, it has come surprisingly far in a decade and a half, and can be used successfully in business situations today.

Fujitsu launched process mining as a service offering three years ago, called Interstage Automated Process Discovery.  I have been involved in the launch and evangelism of this new approach for understanding and optimizing business.  See this 9 minute demo and this podcast on Integration Developer News.  My most recent webinar last month to ASQ was on how process mining can be used to support Lean and Six Sigma methodologies.

Why a Manifesto?

I have personal experience with using the approach, and the results are dramatic.  A simple, two week consulting engagement can give a medium to large organization a number of tips that will certainly save that organization millions of dollars.

I recently attended a presentation to a fortune 50 company where some Fujitsu consultants had spent a few days analyzing some of their order fulfillment history records.  Focusing on operations in two countries, we were able to pin point individual products which had handled incorrectly.  We were able to show how sales progressed differently in the two countries.  We could break this out by specific product line, and could tell them, for example, how long different models were typical delayed in customs or other processing.  I remember particularly the enthusiastic response of one IT executive saying “This is witchcraft!

It is not unusual for people who hear about the approach without experiencing it, to believe that it is too good to be true.   They have a hard time believing that it really works, and it is pretty amazing.  Other members of the IEEE Task Force have run into the same thing: there is not enough known about process mining, and it seems too good to be believed.

This drove the need for a Process Mining Manifesto to clearly define process mining and to help people understand the real promise of this new technology.  It was written largely by Wil van der Aalst and his colleagues at the Technical University of Eindhoven, but also with representation from a broad range of contributors across industry and academia.  It is now being translated into a dozen languages.

If you are not already familiar with process mining, the manifesto is probably the best way to come up to speed quickly.  If you have a high level understanding, the manifesto will give you a solid base to understand in detail when you might want to make use of this approach

Relevance to ACM

Process mining is especially important to Adaptive Case Management (ACM).  When it is impossible to predict the process ahead of time, knowledge workers need to move forward without a predefined process.  Process mining promises a way to retrospectively see what the pattern of work turned out to be, even though it was planned as the work was being one.

Process mining can give you metrics about the process which can be used to evaluate how well the work is being done.  Even though the process is not automated, you can get many of the benefits normally associated with BPM.

It may be possible to avoid completely the large expense of designing the process up front.  This would allow social business software to be used for planning and managing work directly, and still have the insight to improve the business processes over time.

See my next post about “Flipping the Process Life Cycle” to see how process mining might be incorporated into everyday management of knowledge workers.

 

Links


by kswenson at December 04, 2011 10:44 PM

December 02, 2011

Bruce Silver: BPMN Validation Tool – Improved by WebRatio

At the BPMN Workshop in Lucerne two weeks ago I presented a talk called “Fulfilling the Promises of BPMN 2.0.”  The basic point was that the BPMN 2.0 specification by itself is insufficient to deliver on the standard’s two most fundamental promises: first, as a semantically precise process notation, that the meaning of the depicted [...]


December 02, 2011 05:27 PM

Sandy Kemsley: Making Social BPM Mean Business

TweetWhen I owned a boutique consulting firm in the 1990’s, our catchphrase was “Making Technology Mean Business”, and when we were coming up with a title for the webinar that I’m doing with...

[Content summary only, click through for full article and links]

by Sandy Kemsley at December 02, 2011 02:27 PM

December 01, 2011

Saperion.com (BPM related posts): Die wilden Dokumente sind los. Mad Mail und seine Freunde machen die Büros unsicher!

Wer kennt das nicht: Wo ist die Mail hin? Wer hat die Budgettabelle? Was ist mit der Rechnung passiert? Der PC und die Dokumente machen mal wieder, was sie wollen. In solchen Ohnmachtsmomenten beschleicht einen der Verdacht, dass die Dokumente ein Eigenleben haben und es lieben, uns hinters Licht zu führen. In der Tat scheint [...]

by Kathrin Henze at December 01, 2011 08:48 AM

November 26, 2011

Keith Swenson: Case Managers are Artists

There is a lot of discussion about what ACM should be, often talking about what a “user” will want.  But there are many kinds of users who have many differing needs.  To break out of this trap, I don’t use the term “user”.  I use the term “case manager” or “knowledge worker” and when I say this, think of something like “artist”.   Like author Dan Pink says, knowledge workers are creative people like artists.

Discussion on what is required for ACM is often held by people with a lot of experience supporting work with BPM.  The discussion often falls into what I call the “process-analysis-trap”: analyze the work, find common sub-patterns, simplify, automate patterns, work to unify and consolidate automation.  This comes directly from the idea that there must be one right way to do something, and we just need to find it.  Then automate it because that would make it easier.  This all makes perfect sense depending upon what your definition of the “user” is.  In particular, it has nothing to do with knowledge workers.

It is helpful to think of a knowledge worker as an artist.  An Andy Goldsworthy who takes a bunch of sticks from a field and makes a wonderful pattern from them.  A Christo who unexpectedly wraps things up.  Painters like Dali, Picasso, Michelangelo, and Leonardo Da Vinci.  All different, all creative.  (Not all artists are famous like these, but in a public blog post I need to use famous names that we are all likely to have some knowledge of.)

I will use these the example of these artists to show that the process-analysis-trap leads us to entirely the wrong conclusion about how to support artists.  My goal is to show that the process-analysis-trap also leads us to the wrong conclusion on how to support knowledge workers.

Art-Kits 1

How would a bunch of process wonks define tools for artists?  We would define “art kits” that had paints,  paint brushes, paper, paint-by-number instructions, etc.  Only consider this: a real artist does not use a “paint-by-number art kit”.  Wouldn’t it be great if my paint-by-number could produce a work of art like Van Gogh’s Sunflowers.  I can arrogantly say that it never will.

That does not mean that art kits don’t exist, and there are certainly people who buy them.  There are a lot of people who have the job to put paint on canvas, and who are not artists.  For those people (whether hobby or profession) the paint-by-number approach is unquestionably easier to use. Ease of use is not necessarily the goal of the artist.

It is important not to get mixed up between the artist, and the person who paints for a living.  Similarly, we must not get mixed up between the knowledge worker, and the person who simply handles cases for a living — there are a lot of both out there.  If we attempt to draw conclusions without being sensitive to whether the person is really a knowledge worker, we will get invalid results. This is why in these discussions I obsess about “unpredictable” behavior.

Randomness

Even the most creative artist does not start each day with a completely random action.  Do artists follow a pattern, a methodology?  Of course they do, that is the essence of their learning to become an artist in a particular school of art.  The method is what they bring to the table.  The method is what they learn from others and from doing the job. They practice the method.  The exercise themselves.

It is the same with knowledge workers. Their approach to a problem is their approach which has been learned from history and from others.

Enforcing a particular method would unacceptably constrain what a knowledge worker does.  ACM should not enforce any particular method.  The knowledge worker pours their own method into the system. Through use, the ACM system is adapted to the work, but each knowledge worker can define their own method, or decide to use any method from anyone else.

Art-Kits 2

Here is an irony: when I say that a true artist will never use a paint by number kit, I don’t really mean to say this.  The kit, after all, has paint and brushes, and it is possible for a true artist to make a real piece of art from such a kit … even when basically following the numbers.  Does this contradict my earlier statement about the Sunflowers?  Yes it does.  That is the process-analysis-trap we fall into by assuming that there is one true process.  In a certain sense, a true artist can use an art-kit just as well as anything else.

It is the same with knowledge workers.  A knowledge worker can use pre-defined processes, working with them or around them as needed, using email and telephone if necessary.  Pointing to a particular use of a pre-defined processes by knowledge workers is like pointing to a paint-by-number kit used by an artist.  It is not the construct that matters, but what the people do with it that it key.  We can say, however, that an art kit that prevented the artist from painting outside the lines would be too restrictive for an artist to use.  The key for ACM is the ability to ignore the rules when necessary, to redefine the process as needed, and to alter all aspects of the predefined structures.

Artist Supplies

Must artists start with their bare hands?  No.  There are art supplies in standardized forms.  For example, you can buy canvas that is already stretched over a frame in standardized sizes.  This both constrains the artist, and yet is a common enough pattern that it is useful.   The important thing to note is that the canvas stretched over a frame did not come from any smart analysis of what an artist might need, but instead as a result of artists over many years stretching their own canvas: the pattern emerged.

Once pre-built canvasses become available, they cease to be part of the job that the artist does.

As knowledge workers/case managers work, they will develop patterns, and those patterns will be codified into applications (process or otherwise).  When those become codified, they cease to be part of the work of the knowledge work: the knowledge work is just the stuff that is not automated, not formalized.

What did we learn?

The knowledge worker/case manager needs an environment to get work done, and to express any method they want to bring.  There are a set of capabilities that support re-use, but it is all completely under the control of the case manager.

Later, as patterns emerge, an IT department may take on the job of formalizing a part of the work, and producing a BPM application.  When the BPM application becomes available the knowledge worker may start to use it, but it is no longer knowledge work.  In a very real sense, the work has been taken out of the ACM system, and put into a BPM system. It is this last conclusion that makes me feel that ACM and BPM really are completely non-overlapping sets of capabilities.

It is not a different in the technology, but a difference in how you use it.  If the technology is optimized for self-adaptation by a knowledge worker with typical skills for that domain, then it us useful for ACM style work.  If the benefits require a specialist in any kind of skill that is not common in the domain, then this removes it from consideration as ACM.  Artists can use a surprising variety of things to make art.  Similarly, knowledge workers work in a wide variety of environment.  Today, 99% of the knowledge work is being done with email and documents.  Let stop falling into the process-analysis-trap, and focus instead on how to help creative knowledge workers do things their own way.


by kswenson at November 26, 2011 08:16 PM

BPM-Guide.de: Activiti in the cloud – with camunda fox and JBoss OpenShift

Recently my colleague Daniel pointed me to JBoss Openshift, an initiative from JBoss to jump on the cloud train, nobody can avoid these days. But actually there is something really cool in it: You can create and run a JBoss AS 7 in the cloud easily, having either H2 or even MySQL available as a database. After playing around with it took me a Saturday to write a plug-in for the cycle component of camunda fox. This allows us to create and run a process application containing a BPMN 2.0 process at a worldwide reachable URL in a minute :-) Interested? Watch this short screen-cast…

The demo application I deploy there is the one I wrote for the last WJAX, see my blog post with a screencast including the whole presentation. If you are quick I have not yet deleted the cloud instance, so check it our yourself: http://orderdemocloud-camunda8.rhcloud.com/order-confirmation-rules/.

Cycle Openshift Plugin

Cycle Openshift Plugin

Currently Daniel and me are writing an article for the German magazine “Java Spektrum“. There we explain a bit more the idea of process applications using Activiti as a BPMN 2.0 process engine and JBoss 7 as Java EE 6 compliant server, this will be published early 2012, don’t miss it. A good question is about the use case for this scenario. I currently see two very interesting ones:

  • Private Clouds: Think of the same mechanism inside your company. No longer long processes required to get a test or integration system up and running (how long does this take at your company in average? I saw even months at some customers, including hardware procurement).
  • Quick-Start: For some companies the data security aspect of having the application running in the cloud might not be a major drawback, especially compared to the advantage of being fast and easy. Not to mention, that the starter edition of JBoss OpenShift is for free, at least at the moment.

In order to get started:

  • Create a SSHkey pair (yeah, this is unfortunately needed to get it all running), I used PuttyGen (remember you have to export a RSA key and this must be copied to ~/.ssh/id_rsa).
  • Register for JBoss OpenShift
  • Get a GIT environment up and running on your local machine (e.g. Putty & TortoiseGit on Windows)
  • Download the cycle preview
  • Checkout and build the Openshift-Plug-In for cycle by yourself and add it (and all necessary third party libraries as e.g. JGit) to the classpath of cycle (basically the WEB-INF/lib folder)

Please remember: This is a proof of concept, the plug-in was hacked on one Saturday and is not production ready! We just wanted to demonstrate how easy it is to write plug-ins and how cool use cases you can implement :-) I have some things in it only working under windows which would need to be fixed (e.g. calling “mvn.bat”). So watch out for the the TODO’s in the code if you want to play with it or maybe even use it in real projects…

by Bernd Rücker at November 26, 2011 01:10 PM

November 25, 2011

Saperion.com (BPM related posts): Vom Status Quo der Standards im Geschäftsprozessmanagement

Ich war vorgestern zum 4. Mal meine beiden Vorträge Standardisierungsbestrebungen im Geschäftsprozessmanagement und Modellierung mit SAPERION ECM Workflow vor Studenten der Falkutät für Wirtschaftsinformatik an der Universität Leipzig halten. Prof. R. Rainer Alt und sein Mitarbeiter Christian Hrach hatte mich vor drei Jahren das erste Mal eingeladen, u.a. weil er meine Artikel, die ich über [...]

by Dr. Martin Bartonitz at November 25, 2011 11:47 PM

Tom Debevoise: Process, Rules & Events: Critical Business Modeling Methods

Business process modeling, decisions, and business events describe the business, not the technical details. These are evolving, strategic management methods that meet today’s challenges. They work together to make it simple for an organization to update underlying rules or processes activities without complicated redeployments of production systems.

 

Figure for business rule pattern 3, the sequence or path of the process is controlled by the decision graph.

Over the last 5 years, BPM/BR represented a change in the language and symbols that we use to describe business models systems—these methods have become more business-centered and less tied to the technical details of systems. In the past, the IT industry has moved first from information engineering (IE), to object-oriented software engineering (OOSE), to use case analysis. Along the way, commercial off-the-shelf ERP software such as SAP and Oracle Financials became an important part of commonly used technology. The latest methods changed the focus from mathematical theories of data and functions into graphical notations of what the business does. For instance, IE uses an entity relationship diagram (ERD). The ERD depicts relational calculus formulas. A business process diagram, in BPMN, looks and acts like a white board, and business rules have similar graphical descriptions such as decision graphs and decision tables for the rules.

With older methods, data modeling and use case analysis created an immediately outdated technical snapshot of how the organization does business. Businesses always need to change their events, processes and rules to remain competitive. Data modeling and use case analysis do not easily help with these changes in applications. So, in some ways, software based on the metaphors of Process, Event and Decisions is the next step in modern software. Instead of writing programs in Java or C#, these organizations model what the business does in words and diagrams. To update the process or rule, you update the diagrams.

With the acquisition of Inubit, Bosch Software Innovations will soon be offering combined products for Business Process Management (BPM), Business Rules Management (BRM), Business Data Management, and Infrastructure Management. These products form the basis for applications in the Internet of Things and Services as well as for the development of business models based on those applications.

by Tom Debevoise at November 25, 2011 03:10 PM

November 23, 2011

Thomas Allweyer: BPMN Luzern: Anwendertag

Der zweite Tag der BPMN 2011 war wieder der Praxis gewidmet. Einen Schwerpunkt bildete dabei die öffentliche Verwaltung, die mit einem eigenen, gut besuchter Track vertreten war. Die hohe Bedeutung des Prozessmanagements und der BPMN als gemeinsame Sprache in der Schweizer Verwaltung wurde bereits in der Eröffnungskeynote hervorgehoben. Mit Peter Fischer, dem Leiter des Informatikstrategieorgans des Bundes, hatten die Veranstalter einen prominenten Referenten gewonnen. Er betonte, wie wichtig durchgängige Prozesse über alle Ebenen seien. Die föderalen, dezentralen Strukturen der Schweizer Verwaltung machen dies jedoch nicht immer ganz einfach. Als Beispiel für das Reengineering eines Prozesses nannte Fischer das Baubewilligungsverfahren. Bislang muss letztlich der Kunde den Ablauf steuern und selbst die verschiedenen Genehmigungen diverser Ämter einholen. In Zukunft könnte der Prozess so aussehen, dass der Antrag bei einer zuständigen Behörde eingereicht wird, die dann den kompletten Prozess steuert und die Abfragen bei den anderen Ämtern durchführt. Viele dieser Abfragen ließen sich prinzipiell auch automatisieren.

Ein wichtiges Instrument zur Förderung des Prozessmanagements und einheitlicher Strukturen in der Schweizer Verwaltung sind eCH-Standards. Hier werden einheitliche Dokumentations- und Modellierungsstrukturen definiert. Für die Prozessmodellierung ist hierbei BPMN vorgegeben. Wie mehrere Vorträge  aus verschiedenen Bundesämtern, Kantonen und Gemeinden bewiesen, werden diese Standards in der Praxis sehr gut angenommen. Damit unterscheidet sich die Situation in der Schweiz deutlich von der in Deutschland, wo in den verschiedenen Verwaltungen eine Vielfalt ganz unterschiedlicher Notationen und Werkzeuge eingesetzt wird. Diesem Thema widmet sich das ebenfalls auf der Tagung vorgestellte Projekt der “Nationalen Projektbibliothek” in Deutschland. Dort wird eine Plattform entwickelt, auf der alle Verwaltungen und Behörden Prozessmodelle hochladen und austauschen können – unabhängig von den verwendeten Tools und Notationen. Ergänzt werden die modellbezogenen Funktionen – wie Suchen, Anzeigen, Downloaden oder Editieren – um Social Software-Komponenten, über die sich z. B. Benutzer bestimmter Regionen, Behörden oder Funktionen zusammenschließen und austauschen können.

Ich besuchte mehrere Vorträge, die sich mit Vorgehensweisen und dem geeigneten Methodenmix in Projekten auseinandersetzten. Beispielsweise berichtete Daniel Albisser von der Firma ipt über ein System, mit dem Stromlieferanten und Großkunden die Stromlieferungen zeitlich abstimmen und planen können. Für die Entwicklung wurde ein Methodenset aus BPMN-Prozessmodell, Business Objekt-Modell, Service Design-Modell und Geschäftsregelspezifikation verwendet. Zum großen Teil wurde die Anwendung direkt aus diesen Modellen generiert. Vorteil ist die schnelle Änderbarkeit. Insbesondere die konsequente Trennung von Prozessablauf, Geschäftsregeln und Parametrisierung erwies sich als hilfreich, da diese drei Aspekte unterschiedlichen Änderungszyklen unterliegen. Das System ermöglicht insbesondere, dass Parameter und Regeln direkt von den jeweiligen Fachanwendern geändert werden konnten.

Als aktuelles Thema tauchte immer wieder das Adaptive Case Management als aktuell propagierter Ansatz zur Unterstützung wissensintensiver, nicht genau vorhersehbarer Prozesse auf. Die verschiedenen Referenten waren sich jedoch weitgehend einig, dass dieser Ansatz eher eine wichtige Ergänzung der bestehenden Prozessmanagement-Konzepte ist – und diese nicht etwa überflüssig macht. Der in verschiedenen Blogs erbittert geführten Methodenstreit wird daher als viel zu dogmatisch empfunden. Hierbei wurde auch über die “Case Management Model and Notation” (CMMN) diskutiert, die derzeit bei der OMG entwickelt wird. Verschiedene Teilnehmer stellten in Frage, ob ein solcher Standard sinnvoll ist.

Natürlich durften auch die Toolhersteller nicht fehlen. So präsentierte Microsoft die BPMN-Modellierung in Visio. Es sind nicht nur einige nützliche Modellierungsfeatures implementiert, wie z. B. die Erzeugung eines Unterprozesses aus einem selektierten Modellausschnitt, sondern auch eine Validierungsfunktion, mit der man überprüfen kann, ob alle Regeln der BPMN-Spezifikation eingehalten sind. Allerdings ist momentan erst die Version BPMN 1.2 implementiert. Wer BPMN 2.0 benötigt, kann aber auf Add Ons verschiedener Microsoft-Partner zugreifen.

SAP setzt in immer mehr Bereichen konsequent auf BPMN als Standardnotation. Auch die SAP-Kunden werden künftig kaum noch um die Nutzung und Erweiterung von BPMN-Modellen im Rahmen herumkommen. Ob es um die Dokumentation und Anpassung der ERP-Standardprozesse, die kollaborative Prozessentwicklung mit SAP Streamwork, die Spezifikation ausführbarer Prozesse mit Netweaver BPM oder die Visualisierung des Prozessmonitoring geht – immer kommt BPMN zum Einsatz. Als Neuentwicklung stellte Volker Stiehl die Modellierung von Enterprise Integration Patterns vor, über die verschiedene Integrationsszenarien mehrerer zu koppelnder Systeme spezifiziert werden können. Und schließlich setzt auch die Software AG immer stärker auf die BPMN. Zwar findet sich im vorgestellten BPM-Kreislauf nach wie vor zumindest für die rein fachliche Modellierung noch die EPK, doch antwortete Peter Brosi auf eine entsprechende Nachfrage, dass Unternehmen, die noch keine EPK-Modelle nutzen, gleich mit BPMN beginnen können.

Auf reges Interesse stieß insbeondere die Keynote von Bruce Silver, einem der bekanntesten und einflussreichsten BPMN-Experten. Im Vorfeld hatte er erläutert, dass er aber zugleich einer der größten Kritiker der BPMN sei. Dennoch: BPMN sei vielleicht nicht die weltbeste Prozessmodellierungssprache – aber ein Standard. Er stellte die von ihm entwickelten Regeln zur Modellierung sowie zu Modellexport und Ausführung vor. Erstere richten sich vor allem an die Modellierer. Sie dienen dazu, Modelle möglichst präzise und eindeutig zu machen. Die Export- und Ausführungsregeln richten sich vor allem an Toolhersteller. Ihre Einhaltung ermöglicht u. a. eine bessere Austauschbarkeit zwischen Tools und die einheitliche Interpretation durch Process Engines. Diese Regeln sind in der gerade erschienenen Neuauflage seines Buchs “BPMN Method & Style” näher beschrieben. Nächstes Frühjahr wird es davon auch eine deutsche Übersetzung geben.

by Thomas Allweyer at November 23, 2011 08:08 AM

November 21, 2011

Thomas Allweyer: BPMN-Workshop, Teil 2

Die Nachmittagssitzung begann mit einem Vortrag von Matthias Kunze vom Hasso-Plattner Institut. Er stellte eine Auswertung von knapp 2000 Prozessmodellen vor, die hauptsächlich von Studenten und Dozenten an Hochschulen erstellt wurden. Als Methoden kamen EPKs und BPMN zum Einsatz, das verwendete Tool war Signavio. Es zeigte sich, dass EPKs meist etwas größer als BPMN-Modelle sind. Allerdings sind die allermeisten Modelle sind nicht sehr komplex. Es gibt wenige Zyklen und parallele Abläufe. In beiden Notationen wird zumeist ein sehr eingeschränkter Sprachumfang verwendet, wobei die Zahl der unterschiedlichen in einem Modell verwendeten Konstrukte in BPMN-Modellen etwas größer ist. Aus den jeweils am häufigsten verwendeten Konstrukten zogen die Forscher den bemerkenswerten Schluss, dass BPMN stärker für die Modellierung von Business-Aspekten verwendet wird als EPK.

Cesare Pautasso diskutierte die Frage, wie man die Nutzung von REST-basierten Services in Prozessen modellieren kann. REST (Representational State Transfer) bezeichnet einen Architekturstil für Web-Services, bei dem Ressourcen, wie z. B. Kundendaten, über eine eindeutige Web-Adresse angesprochen werden können. Zur Nutzung und Bearbeitung dieser Ressourcen stehen einheitliche Operationen zum Ändern, Lesen und Löschen zur Verfügung. Ziel der vorgeschlagenen Erweiterung ist es, die Nutzung solcher Ressourcen in ausführbaren Prozessmodellen sichtbar zu machen. Zur Modellierung externer Ressourcen wird ein Datenspeicher mit einem speziellen Symbol verwendet, die Aufrufe der REST-Operationen werden als Nachrichtenflüsse zu diesen Ressourcen modelliert. Es lassen sich aber auch Tasks oder ganze Prozesse in Form von Ressourcen zur veröffentlichen. Hierzu werden sie im Modell mit entsprechenden Symbolen versehen. Als Ergebnis stehen REST-Schnittstellen zur Verfügung, über die man z. B. alle Instanzen eines Prozesses erhalten kann.

Christine Natschläger stellte eine BPMN 2.0-Ontologie vor. Eine solche Ontologie beschreibt die Konzepte, Beziehungen und Regeln eines bestimmten Anwendungsbereichs, in diesem Fall der BPMN. Sie kann dazu dienen, die in der BPMN-Spezifikation nur textuell und mit einigen Diagrammen beschriebene BPMN einheitlich abzubilden, Widersprüche in de Beschreibungen aufzudecken und eine automatische Syntaxüberprüfung zu ermöglichen.

Philipp Effinger von der Universität Tübingen zeigte eine Sammlung von Layout-Patterns für BPMN-Modelle, die die Verständlichkeit erhöhen sollen. Beispiele solcher Patterns sind das geometrische Pattern (gleichmäßige Verteilung von Elementen) oder das Gateway-Pattern, bei dem sich alle Elemente zwischen verzeigendem und zusammenführenden Gateway auch optisch zwischen diese Gateways befinden müssen, d. h. in einem horizontalen Diagramm rechts vom verzweigenden und links vom zusammenführenden Gateway. Das Team der Uni Tübingen entwickelte auch Algorithmen, mit denen existierende Modelle automatisch gemäß den Patterns umgestaltet werden können.

Yvette Hoekstra von Capgemini erläuterte ein Vorgehen zur integrierten Modellierung und Automatisierung von Geschäftsprozessen und Geschäftsregeln. Es besteht aus den Phasen Wissenssammlung, Strukturierung, Formalisierung und Implementierung. Die schwierigste Frage ist, was im Einzelnen als Prozess und was als Regel zu modellieren ist. BPMN und Notationen für die Modellierung von Business Regeln sind bisher sehr stark voneinander isoliert.

Mit der Choreographie-Modellierung beschäftigt sich Mario Cortes-Cornax von der Universität Grenoble. In seinem Vortrag ging es um die Frage, wie gut die in BPMN 2.0 neu eingeführten Choreographie-Diagramme geeignet sind. Bei der Untersuchung wurden einige Defizite der BPMN Choreographie-Modelle entdeckt. So ist es beispielsweise nicht möglich, Mehrfachnachrichten zu modellieren oder die Weitergabe von Referenzen auf Geschäftspartner. Auch die grafische Darstellung ist nicht immer ideal. So unterscheidet sich eine normalen Choreographie-Aktivität von einer Aufruf-Choreographie-Aktivität nur durch die Strichstärke des Randes. Trotz dieser Schwächen ist die BPMN nach Mario’s Ansicht insgesamt recht gut geeignet für die Choreographie-Modellierung.

Alexandru Caracas von IBM Research demonstrierte, wie man drahtlose Sensornetzwerke mit BPMN modellieren und hieraus Code generieren kann. Hierbei geht es u. a. um Aspekte der Synchronisation, der Kommunikation und des Zeitverhaltens. BPMN erwies sich als gut geeignet. Wünschenswert wäre noch die Hierarchisierung von Pools.

Der Einsatz der BPMN zur Modellierung einer Enterprise Architecture demonstrierte Ricardo Seguel von der Technischen Universität Eindhoven am Beispiel eines Krankenhauses. Hierbei wird BPMN auf allen vier der hier verwendeten Ebenen eingesetzt: Process Architecture, Business Design, Process Logic, IT Process Support. Die Implementierung erfolgte hierbei auf Basis eines BPMS. Auf den höheren Ebenen werden hierbei keine echten Sequenzflüsse im strikten BPMN-Sinne verwendet, sondern eher

Luis Stroppi stellte die Arbeit einer Arbeitsgruppe aus Brasilien, Frankreich und Argentinien vor, die häufig auftretende Workflow Activity Patterns definiert und mit BPMN modelliert haben. Beispiele hierfür sind unterschiedliche Varianten von Genehmigungen, Verarbeitung von Anfragen, Benachrichtigungen oder Entscheidungen.

Im abschließenden Vortrag beschäftigte sich Klaus Sperner von SAP Research  mit Entity-basierten Konzepten in Prozessmodellen. Um Abläufe für das “Internet der Dinge” zu modellieren wird empfohlen, Konzepte wie physische Objekte, sowie Aktoren- und Sensoren-Tasks einzuführen.

Auf dem heutigen Workshop zeigte sich deutlich, dass sich die wissenschaftliche Community nicht mehr nur mit formalen Aspekten von BPMN-Modellen oder ihre Transformation in andere Repräsentationen, wie z. B. BPEL, beschäftigt. Stattdessen rückt zunehmend die sinnvolle Anwendung der Notation für verschiedene Bereiche in den Mittelpunkt – und verstärkt auch die Sicht des Business auf die Prozesse. Das ist auf jeden Fall erfreulich.

Eine interessante Frage ist, wie die BPMN-Community mit den zahlreichen vorgeschlagenen BPMN-Erweiterungen umgeht. Die in einer Diskussion aufgekommene Idee, eine Plattform zur Sammlung solcher Erweiterungen zu schaffen, ist daher durchaus überlegenswert. Möchte man Modelle für bestimmte Anwendungsbereiche und Modellierungszwecke erstellen, so könnte man dort nachsehen, ob es bereits geeignete BPMN-Erweiterungen gibt. Bislang scheint es auch kaum BPMN-Tools geben, die eine gute Möglichkeit zur Nutzung des BPMN-Erweiterungsmechanismus zu geben. Andererseits, so wurde in der Diskussion angemerkt, sollte man inhaltliche Erweiterungen auch nur dann anbringen, wenn sie wirklich Vorteile bringen.

Jan Mendling kündigte noch an, dass der nächste BPMN-Workshop am 12. und 13. September 2012 an der Wirtschaftsuniversität Wien stattfindet.

by Thomas Allweyer at November 21, 2011 04:42 PM