jBPM offers two different process languages. Any of them let you to orchestrate web services. BPEL is fully oriented to web services, but it does not let you directly incorporate user tasks or Java components. Conversely, jPDL lets you easily incorporate Java code and human intervention. Currently no special support exists for web services, but you can use existing Java APIs to consume and produce web services.
Since both languages are implemented with the same building blocks, you can use a common API to manage and monitor processes in either language. The Console subproject provides you with JSF-based web interface to examine and manipulate process definitions, instances, task lists and more.
So I have another question...
Is it feasible to implement a system to monitor the processes with jBPM?
Is it better using BPEL or jPDL?
I have to do it in approximately 4,5 months.
define "to monitor the processes" in more detail. Look at 3.2 webconsole there are already some things in there.
BPEL or JPDL depends on what you want to achieve. The console works for both
I mean "process monitoring" as having a web interface (implemented with flash, or ajax, or others) where I can see, at run time, the evolution of objects each time that they receive a web service of my business process. This evolution might be represented by icons colors, or icons changes, or something like this...
If it's not clear, that which I desire is to implement something like ILog jViews, and here you can see a demo:
I want to implement something like this.
Is it feasible?
This is partly what I meant with define 'process monitoring" The thing is that it can be looked at so broadly that not everything you want is in there. If with "the evolution of objects" yuou mean the processvariables etc.... then yes, that is in there
The ILogs demo is an example of such broad functionalty that some more detail is needed
Actually I'm just starting in using business processes, jbpm, and all this, and I'm exploring the solutions, so I'm sorry if I place stupid questions... :)
Well, I try to explain better.
Firstly, my "objects" are documents (application forms, motivation letters, CV, etc...)
Imagine a document to have to be validated by somebody. The validation is made, in my system, by a web service.
In my interface I want to see, e.g., the scenario of the web services, an icon (representing the service which has validated the document) which change color for a moment when the object document is validated, and some additional information (the name of the document, or the history of the services received in the scenario by the documents, etc...).
My interface will be a web interface, I repeat, and I want to see all this in an animation in a web page (made using flash, jsp, applet, ajax, etc).
I think that I can do it if you tell me that I can see (and use) the process variables, isn't it?
All info you need is indeed in the process log and process variables (some variables must be filled by you, but that is what workflow/process flow is all about)
Animated it is currently not. Just static info. Look at the webconsole of 3.2 to see how this info can be used.
please, tell me if i got it.
With jBPM :
. you can have a static bpel scenario
. but there is not a ready plug in which makes a dashboards of my business process (business activity monitoring) for run time monitoring
. you can develop a (maybe simple) dashboard your self using Java APIs and interfacing apis with business process.
Which form is the log in? Is it a plugin of jBPM or is it a text file which I have to parse?
dashboard is such a broad term that you have to define that. The upcomming webconsole can show you some statistics, but maybe not all what you want. The log is in the DB
So if I understand correctly, there's no such API that would help me to access the runtime evolution of a bpel scenario.
One solution you're proposing is to look into the bpel process log file or DB, which does not seem very convenient ...
I thought there would be some facilities provided to access the bpel engine at runtime and thus get 'live' information on a running bpel process and use it to refresh a web interface.
Is that correct?
Thanx in advance,
Depends on what your definition of running is.... a running jpdl/bpel process can be in a state of doing nothing. Waiting for external input. Should that be kept in memory? Would be a nice requirement although it would highly conflict with one of the other requirements: high volume of running processes.
And yes there is an api, but that goes into the db (as per the above requirement). Besides that, how often are you going to refresh the page... once every minute? maybe even less, how complex would this page be? What you are actually describing is business activity monitoring with downdrilling to individual processes. So again... be very, very specific on what you want. There is a page on the wiki about BAM to as well as a jira issue. Read those help us by specifiing in more detail what you want.
I'll try to explain better...
I want a web page.
In this web page I want to show a BPEL scenario.
I want this BPEL scenario to be dynamic, it means I also want to represent the changes at run time. I think that, client side, the dynamism can be obtained by using ajax technology. The refresh can be every 10/15 seconds. If I use ajax technology I think that the complexity of the page won't make influence in the refresh, isn't it?
In this scenario I want to represent the Business Process Tree, and, in some way, to represent the events that happen.
Making an example, I want to see some information about every service of the business process (every state of the business process tree), such as a counter that tell me how many objects have passed this service, or how many objects there are in the queue... and things like this.
If the bpel process is doing nothing it means that in my bpel scenario I won't see any change.
I hope it's clear...
Where do I get the console subproject?
I have couple of BPEL processes running on JBPM now and would like to see them at runtime as I am sending requests. I am not expecting graphical UI. Just variables values is fine.