Wednesday, April 18, 2012

Aperte Workflow - why another BPMS?

What is Aperte Workflow?

Aperte Workflow is a BPMS (Business Process Management Suite) designed and developed by BlueSoft. The project has started in 2011 and is currently approaching version 2.0.

BlueSoft is an Independent Software Vendor specializing in custom, tailor-made IT solutions for the enterprise customers - based either on Open Source or proprietary software.

The company itself comes with over 9 years of experience in developing such solutions, which gives a certain perspective on how things should be done. But still, young enough to be able to innovate effectively.

Why build another Open Source BPM solution?

That is a good question, and we ask it ourselves every time we forego existing, available technology and start creating something new. 

With Open Source BPMs and Aperte Workflow, the decision came from a simple observation: that every time you need to deploy a BPM-based solution (be it Open Source or commercial software) in a real application, which provides real processes, used by real users, you need to build an application around it.

You have to provide at least:

  • Integration with Customer's authentication/authorization mechanisms.
  • Custom User Interface. Forms with text, number and date field are great, but usually the business requirements are much more complicated. 
  • Integration on the browser-level with Customer's intranet portal (desktop based BPMS in my opinion are a total misunderstanding) - or some kind of base for BPM application.
  • Enterprise integration with the Customer's other IT systems (CRM, ERP, ...).
  • Flexible data model

And yes, it is possible to build such solution yourself. Integrate existing technologies into one solution, learn how to use them, find bugs in your code and in the code of the technologies you are using - and then, finally you can start developing your processes. 

This is exactly what Aperte Workflow provides - a ready-to-use, well-tested and mature product, which provides a platform or a placeholder for your processes and custom mechanisms. Done right, with reusability, scalability and performance in mind.

We do not aim to it be a complete solution for your business process (although it is very easy to build one with Aperte Workflow!) - we understand, that every process in every company can be a little different. But, there are some things that have to be done for every BPM deployment, so why not do them once and right?

For us, Aperte Workflow is different from the other solutions, as it approaches problems on a different level. We do not try to provide an answer to every problem that rises during BPM deployment in an organization - but rather to provide means, that the solution will be worked out easily and will be coherent with other parts of the deployment and will be re-usable in other areas.

What Aperte Workflow provides?

Aperte Workflow provides common things that usually have to be built when deploying BPM in an organization. But, since this is a standalone product, even more features, that wouldn't be usually implemented in a custom BPM deployment are provided.

Portal Integration

Aperte Workflow integrates with JSR168/286 compliant portals (e.g. Liferay). By doing so, you do not only have an awesome integration with existing portal or enterprise IT infrastructure (e.g. Active Directory, NTLM, ...), but you also have a place to introduce and integrate other applications.

Using JSR168/286 allows you to standarize and unify all your browser-based applications - into a one, coherent intranet portal. 

Custom User Interfaces

With Aperte Workflow, user interface for each human task (on the task list or in details) is built from re-usable components. These components, provided as plugins, can provide:

  • all-round, generic features, such as simple input form or a tabsheet organizing other components
  • specific features - usable in most of the processes, such as comment form or process history log
  • custom business logic - related to a certain process or organization, a CRM customer search form would be an example for that.

The UI is provided by Vaadin, therefore its customization requires no HTML/CSS skills - it is programmed directly in Java. And with Vaadin, we can build beautiful, rich web interfaces with ease.

Enterprise integration

Aperte Workflow allows users to build automated steps as plugins. As with User Interface, some of them can be quite generic (e.g. invoke Drools), others - very specific. All of them can be reused in different processes without any trouble.

Also, Aperte Workflow comes with a sample plugin, that embeddes Mule ESB as an OSGi service. Other plugins can deploy simple Mule services, and processes can invoke them using Mule automated step. But - this is just a convienent sample of integration mechanisms and if for example ServiceMix would to be embedded as an integrated ESB - why not?

Extensible data model 

Aperte Workflow's data model is built with JPA/Hibernate. That grants us significant portability with little effort, but also allows the plugins to provide their own data model without performance downgrade - the data model is mapped directly to SQL database. 

BPMN2.0 modeler

When designing BPM system from scratch, around existing BPM engine or solution, you usually have to configure process in two places - one for the BPM engine and the other for your customizations. Rarely you would take the effort to create a graphical, coherent tool to do that. 

But, as Aperte Workflow is designed for more than one deployment, such effort pays off. That's why we have taken Signavio Core Components BPMN2.0 editor and combined it with our configuration controls into one, complete, browser-based process modeler.

How Aperte Workflow is built?

We have decided to build Aperte Workflow on top of existing, Open Source technologies. That not only saves us from the trouble of building everything from scratch, but also provides other, even more significant advantages:

  • Maturity from the start. We don't have to test, mature and grow our components. They are already checked by thousands of their users and built around their feedback.
  • Much easier to learn. It is much easier to start using or diagnose a problem with a solution built from technologies you are already familiar with, or that have a thriving community around them.
  • New features. If you are using your own software, there is a great chance, that all the features have to analyzed, provided, tested and checked by you. 

Aperte Workflow is built from many Open Source libraries and frameworks, to mention only the most significant:

Create once, use many times

Aperte Workflow is great when it comes to building reusable components. Yes, many processes may differ, but building blocks for them can be re-used many times. Some of them, such as simple form displaying/editing process attributes or comment input form can be universal across the whole world, other - can be universal only in a specific organization - for example CRM customer search form would be applicable to many processes but only in current organization.

As Aperte Workflow is created in Java(tm) technology, the natural and simplest way to provide plugin mechanisms is to use an OSGi framework. OSGi is great, because it provides a standarized, well-thought way to:

  • isolate each plugin within its classloader space - with its own libraries and dependencies
  • provide a means for plugins to communicate with each other
  • manage dependencies between plugins

With Aperte Workflow, reusability is provided on many levels, in compliance with the spirit of Service Oriented Architecture. Aperte Workflow services (bundled in OSGi plugins) can provide for example:

  • user interface components
  • automated steps performing business logic or integration
  • localization (I18N)
  • custom mechanisms that access Aperte Workflow API - e.g. start processes or provide embedded ESB for processes
  • process dictionaries

and many more..

4 comments :

  1. Hi Tomek,

    I have successfully build the master with maven (Aperte 2.1 and Liferay 6.1.1). The build was successful without any errors. However when I drop userdata-widget-2.1-SNAPSHOT.jar in osgi-plugins folder, it gives a ClassNotFoundException for pl.net.bluesoft.rnd.pt.ext.userdata.model.ProcessInstanceUserAssignment.

    Further it says org.osgi.framework.BundleException: Unresolved constraint in bundle pl.net.bluesoft.rnd.pt.ext.userdata [1]: Unable to resolve 1.1: missing requirement [1.1] osgi.wiring.package; (&(osgi.wiring.package=com.liferay.portal.model)(version>=6.1.0))

    This is the only component that fails. I will high appreciate any help.

    Best Regards

    ReplyDelete
  2. Hi,

    Sadly, I am not a part of Aperte Workflow project for over a year now. It would be best for you if you could just report an issue on Aperte Workflow GitHub project page or on forums on aperteworkflow.org.

    Cheers,

    Tomek

    ReplyDelete
  3. Cześć!
    Aperte jest na prawdę ciekawym projektem i właśnie zaczynam go poznawać. Mam pewien problem: staram się zamodelować proces, w którym mam kilka fili firmy oraz osoby na odpowiednich stanowiskach (role: pracownik ,kierownik w każdej filli). Proces ma obsługiwać wniosek urlopowy składany przez pracownika danej filii, potem trafia do kierownika a po akceptacji przesyłany jest do siedziby głównej. Chodzi o to, aby jednym procesem obsłużyć wszystkie filie tj. żeby ewentualne zwroty z głównej siedziby, wracały do filli która zainicjowała proces. Czy masz pomysł jak to zrobić?

    ReplyDelete
    Replies
    1. Wydaje mi się, że najprostszym sposobem byłoby zapisanie filii/osoby akceptującej w zmiennej i potem przypisanie z powrotem. Ale, jak wspominałem powyżej - nie zajmuję się tym projektem już od 2 lat - i najlepiej zadawać takie pytania na forum Aperte Workflow - http://www.aperteworkflow.org/forum

      Delete