cancel
Showing results for 
Search instead for 
Did you mean: 

SImulation of process definition

swiderski_macie
Champ on-the-rise
Champ on-the-rise
Hi,

Let me start with the question - is there any simulation related work on the way or in future plans?

Reason why I asked is that I have found myself in situation where stake holders where convinced to introduce an open source BPM engine to the company but business users always ask for simulation capabilities - I cannot say I know about all of such products - but unfortunately there was none that could bring this out of the box, more over that will be integrated with modeling/designing tools.
That lead to the hobby I am putting quite some spare time right now and would like to hear from the community if there is an interest in such component.

Please take a look at some of the docs I put together for PoC for simulation engine as I called it. This is a starter of bigger thing in BPM domain (hopefully will have enough time to work on it - but that is a topic for yet another discussion, maybe in the future)

http://sourceforge.net/p/bpm-accelerator/wiki/

It's not much, I am still working on it, but I hope it will give some insight into what I am trying to do. All your feedback is more than welcome. Once I will feel ready to show the code I will make the SVN repository accessible too, but I am not there yet - too messy to show it to the public Smiley Happy

Anyway, looking forward to your comments and cheers for Activiti - great piece of software.

Regards
Maciej
11 REPLIES 11

jbarrez
Star Contributor
Star Contributor
I took a quick look - already good sign that there is enough docs!

I have some more technical questions: how do you 'mimic' execution? Are you replacing steps of the process with your own ActivityBehavior?
Secondly, are you planning on doing a UI on top of it? Afaics, it looks like your aim is an API.

swiderski_macie
Champ on-the-rise
Champ on-the-rise
Good to hear that docs bring enough information to get the first feeling of what this is all about.

Regarding "mimic" execution, at the moment it simply goes over all process elements found in alternative path and invoke defined simulation features to calculate statistics, there is no process engine work involved at all. It completely relies on simulation attributes given on every activity, transition, etc. As mentioned on wiki, this is still PoC so I am opened for any ideas to improve it and to make it more usable.

Yes, I plan to have UI for it, at the moment primary UI for it is Signavio Modeler, especially for input collection. Reports are now in xml format with xsl transformation so it could be more readable and interactive. Initial plan was to integrate it more with Singavio and what is available on the report right now should be consolidated with Singavio editor too. I was thinking it could be included in Eclipse tooling too, for more advanced features that are not best suited in web based environment…

API was created to make it more generic, so more process engines could adopt it in quite simple steps. Moreover I wanted to have it extensible so anyone who use it can decide what to include and what not.

jbarrez
Star Contributor
Star Contributor
Regarding "mimic" execution, at the moment it simply goes over all process elements found in alternative path and invoke defined simulation features to calculate statistics, there is no process engine work involved at all. It completely relies on simulation attributes given on every activity, transition, etc. As mentioned on wiki, this is still PoC so I am opened for any ideas to improve it and to make it more usable.

So, if I understand it correctly, you are writing your own (simple) process engine, to mimic process execution, right.
That certainly works, but keep in mind that you'll have to exactly mimic each BPMN 2.0 construct to get the 'right' simulation.

I would assume that you could leverage the existing process engine, and switch some activities with simulation activities: eg instead of sending a real email, just replace it with a no-op. I didn't do much thinking about it yet, so take these thought with a pinch of salt 😉

Yes, I plan to have UI for it, at the moment primary UI for it is Signavio Modeler, especially for input collection. Reports are now in xml format with xsl transformation so it could be more readable and interactive. Initial plan was to integrate it more with Singavio and what is available on the report right now should be consolidated with Singavio editor too. I was thinking it could be included in Eclipse tooling too, for more advanced features that are not best suited in web based environment…

Did you already look into the code from the Modeler? I know from some people it's not that easy to add stuff to it.
XML reports are perfect if you don't want to bind to any client, but also offer a parsing API then (makes life so much easier ;-))

API was created to make it more generic, so more process engines could adopt it in quite simple steps. Moreover I wanted to have it extensible so anyone who use it can decide what to include and what not.

Sound great! One use case that always gives a wow-factor, is being able to add people parameters to human tasks to see how well the process behaves in certain cases. Eg when your assignment group has only two people, and both of them are ill, the process could completely halt. Finding such bottlenecks is imo, the most valid use case of simulation.

swiderski_macie
Champ on-the-rise
Champ on-the-rise
I think we could say that it will be kind of process engine I was initially thinking to reuse activity engine for that but it looked to me a bit od overkill. Especially there must be number of components around it, for instance staff pool manager that is responsible for imitating real users available to work on a given task. But I will definitely take that under consideration when doing some review.
I am not sure I need to mimic BPMN2.0 construct - for instance does it really matters (from simulation point of view) if the given activity is receive or send task? Simulation engine cares only about the attributes on the activity it can understand and invokes features on it to calculate statistics. So if there are same attributes available for both activity types than the simulation engine will not distinguish it at all.

Regarding modeler, I can confirm that it is not like "walking in the park" Smiley Happy but I managed quite easily to add my own client and server side plugin. Extended attributes panel with simulation attributes and make the modeler to persist simulation attributes into BPMN2 diagram file. BTW, it is stored as an extra element for extensionElement tag (need to put that on wiki Smiley Wink).
But I decided to generate report on separate page due to two reasons:
1. complexity of the work to embedded it on the same view as modeler
2. makes more sense to have it as separate window where more readability is available - focus on simulation results and not the ongoing work with modeling
Moreover I plan to introduce something called simulation suite - that means you specify your simulation attributes once (in form of variables) and then run simulation with providing list of variables sets and simulation engine will generate several reports that can be compared against each other…

Parsing API for reports - good point!

People parameters are already in - it is available as simulation attributes on user task (availability - number of people available to perform work on that task, working hours - how many hours during a day these people are doing the work) based on these and few others (duration) both wait time and resource utilization statistics are calculated. If that is what you were referring to?!

I guess I forgot to mention - since that is PoC I would like to ask for your opinion if you see a valid case for this to be a comprehensive component for process engine? Doing that just for doing it is still fine but if there is an interest of having it for real cases is much better motivation.

Cheers
Maciej

jbarrez
Star Contributor
Star Contributor
Looks all very cool 😉

The most convincing story you can do, is show a demo of how it is used and what you can do with it.
That way, it will be much easier to get into Activiti 😉

swiderski_macie
Champ on-the-rise
Champ on-the-rise
Great to hear your comments Smiley Happy

I am on my way to move to SourceForge so hopefully by the end of the week everything will be there.

I was planning to find a place where I could host the modeler with simulation but did not find anything yet suitable for it. In mean time I will prepare complete package (as zip) that will have everything bundled together so people could download it from SF and play around for a bit. Do you think that would do for the first preview? Or did you thought more about kind of screen cast to illustrate what it can do?

Thanks for considering it as candidate for Activiti Smiley Happy I hope it will be good enough.

Keep you updated about progress and as soon as it will be available on SF I will post a link to it here too.

Cheers
Maciej

swiderski_macie
Champ on-the-rise
Champ on-the-rise
just very quick update - please follow the link to view short screen cast about simulation (no voice):
https://sourceforge.net/p/bpm-accelerator/wiki/Simulation%20Engine/attachment/simulation-engine-scre...

Hope you like it and again, all your comments are more than welcome

Cheers
Maciej

jbarrez
Star Contributor
Star Contributor
Maciej: that looks awesome! Really impressive how you were able to do all that in Signavio.
So am I correct, is this based on the Activiti Modeler.

Could you send me your skype id in a private message? That way, we can chat in real life and see where this is going.

swiderski_macie
Champ on-the-rise
Champ on-the-rise
Great to hear that you liked Smiley Happy

I was working with the default configuration of signavio modeler but I tried how much is needed to have it ready for Activity configuration. It did not take too much Smiley Happy

P.S. Message sent.

Cheers
Maciej