How to install several "Live Applications" simultaneously

1
0
-1

Hello everybody,

I am learning from Live applications and have a funny problem... After I import one application from the bundle, importing another one causes a conflict in bdm.zip file. Obviously, this name is identical in each bundle.

Is there a way to change the file name in the application bundle before import so that I can have several different apps running simultaneously on the same Bonita instance?

I understand this only applies to the examples using H2 or SQLite, as in real life the app would have its own specific business database setup and use a regular database server.

Thank you!

Jindra

Comments

Submitted by jindrich on Thu, 12/01/2016 - 12:33

This is a real and definitive no-go for Bonita, at least as far as I am concerned.
As soon as I import a new application, the business model of the existing ones is discarded and the previously imported (older) application stops working. The applications should be modular and if you say BDM must be "global" (which is not true, by the way...), an additional application should either merge its BDM with the existing one or keep its BDM in a separate namespace - same as the apps have different URIs on the server.
How can you consider any serious use in business with such a drawback? Just imagine three different bank teams working on three business areas:
1) loan origination
2) loan administration
3) collections
Obviously, all three applications will be separated, as they have different business owners and will be operated by different teams. And, obviously, these three applications will share substantial part of the BDM (client and loans will be shared by all three of them, loan repayments will have to be shared by loan admin and collections).
How can you possibly finish such an application suite and deploy it to production if each of the components destroys the other two as soon as it is deployed to the server?

Submitted by contact_420 on Sun, 12/04/2016 - 23:02

I understand your point of view but can't agree with you. In my opinion BDM should be global, and its developement should be coordinated across all the teams. As you mentioned, some parts of BDM will be shared so you have to make it global anyway. It's an "organization level" model, not a "process level". It is the same situation as with an organization model. You make one model for all the processes.

Best regards,
bpms.help

Submitted by jindrich on Mon, 12/05/2016 - 09:32

I am sorry, I don't think this would work in practical life.
If one application deals with customer business data (such as loan) and some other application on the same server instance (likely implemented as a server cluster or some kind of cloud) is used for internal tasks (such as HR stuff), these two areas are clearly separated, and actually must be separated (this is a regulatory requirement and also "best practice").
On top of that, in a real environment the actual database implementations of the loans database and the HR database will be separate. Again, this has many obvious reasons - one of them is that loan data are confidential and access to them is reserved to the respected authorized staff, and the same applies to HR data which are confidential, should not be leaked out of HR (with the obvious exceptions of "my own data" and the respective manager). Another reason is maintenance and further development.
This is the standard setup and structure in every business I have seen so far except one small Australian firm which is basically a "one man show" and has less than 20 employees.
Why Bonita system expects that all data models of all applications go into one model is a way out beyond common sense. I am currently working in banking environment. It is "only" data consolidation and reporting data warehouse, but the number of data models of just the warehouse itself (no datamarts) we work with is about 10, tables (entities) are counted in hundreds, table columns are ten of thousands.
To put this in context with a BPM engine, I will count the data models and tables that represent the respective primary systems, i.e. the "real business" where people do some "real work" work and use workflow to complete some business processes. So we have 63 of these data models. Almost all of them or all of them are models of business data. I wonder how would you coordinate ongoing development in 63 different teams using a one business model on a "global level". When I take just two random key business systems of these 63, one of them has ~60 tables (entities) and the other one 200 to 300... All these data are worked with in real processes...
If I leave the business question alone and stick to demo applications only, I cannot understand how is it possible that installing an additional independent application, packaged in its own application bundle, completely breaks any applications installed before.
If nothing else, there must be a tool to somehow compile or merge all partial business data models. How do you want to ensure that your IT operations can safely deploy a new version of some partial process on your production system without putting your company completely out of business because all existing workflows suddenly stop working (and you would probably lose some data, too).

Submitted by jindrich on Mon, 12/05/2016 - 09:35

I would like to return to my original question.
If I want to demonstrate two different applications, when I upload the second one, the server warns me that there is a file conflict in bdm.zip. But - it does not offer any solution at all. Either I confirm that I want to overwrite bdm.zip - and all previously installed applications are destroyed except in the rare case when their BDM is a subset of the new BDM (which is unlikely if the apps are not related), or I install a new applications but it will not work because its BDM is not installed.
So, how to solve this problem?

Submitted by contact_420 on Mon, 12/05/2016 - 09:56

Just to answer your question. In Bonita 7.3 bdm.zip is a zipped xml file. You can unzip both, merge xml files in text editor and zip it back.
In 7.4 it will be much easier as the file is not zipped.

Submitted by jindrich on Mon, 12/05/2016 - 10:46

Understood... What exactly is the purpose of the BDM.xml? Is it used to generate Java classes? What happens if I change it in the running instance, will it recompile the respective classes?

And please, could you confirm if I am wrong or not: is the BDM.XML used only for development in Bonita Studio (that might be acceptable) or is it used also for application deployment to Bonita server? I did not consider that this might be an issue only when using Studio. Although having the possibility to use various BDMs simultaneously could be useful even in process development ;-)

Submitted by contact_420 on Mon, 12/05/2016 - 11:01

Well, I don't know the technical background. But I'm sure that there is a jar library generated in studio based on bdm.xml file so you need to merge on the developement level, not in 'runtime'. I don't know if bdm.zip is used for deployment or only jar lib counts.

Best regards,
bpms.help

Submitted by Lionel Palacin on Fri, 12/09/2016 - 19:59

Really interesting discussion!

The scenario you describe Jindra is definitely correct and I agree that it’s not always easy to handle with the current version of the platform, especially with the Community Edition. The SP edition comes with more features that help, like multi tenancy by example that let you logically split the Bonita engine into multi tenants with each of them managing their own BDM instance.

Also Sean is right, the 7.4 will provide a better way to collaborate on a global data model. However, the merge will have to be done at the development stage and a unified BDM deployed in the platform.

That being said, I’d like some elements about why the BDM is shared across different applications. It’s a deliberate architecture choice. The other choice would have to restrict the scope of a BDM to an application (or even a process), but in that case the platform won’t cover another use case where different applications are sharing the same BDM instance. By example, the loan management application, we can imagine having one application for the accounts manager who are initiating and following loan requests and another application for the supervisor who verify the loan requests, accept or reject them and generate reports on the department activity. So the choice was to share the same BDM across all the applications and for the SP customer we built a feature that allow them to logically split their engine to different tenants.

Best

Submitted by jindrich on Tue, 12/13/2016 - 15:51

Hello Lionel,

definitely the main direction is correct = data model(s) should be shared by various applications.

The point is that application is focused on certain set of processes while the data objects have, in general, a different scope. I would say that the BDM scope is wider than one application. However, there are certain data domains that are independent between each other. This is not currently reflected in Bonita architecture.

So I would like to suggest that, for the future, you could consider a slightly different architecture where BDM's would be linked to (referred to by) applications but would not be indivisible part of the application.

On one hand such architecture introduces an extra set of dependencies (BDM models vs. applications or processes), on the other hand it enables separation of concerns. Some additional tools or utilities would be necessary, too, so I understand this might be a costly decision.

Maybe the best way is to have some "ideal solution" in your mind or on a flipchart, and wait until some real-world project hits the BDM obstacle hard, then jump in and quickly implement version 1 of that solution.

On a slightly different note, the reason why I was asking about the purpose of BPM.XML - if the model is supposed to interact with a database (which is the most frequent case, I assume), it might be useful to have some transformation tools to generate both the BDM and the physical database model (DDL scripts) from one common source (maybe something like Enterprise Architect, Power Designer models, swagger files, etc.).

1 answer

1
0
-1

This will be fixed in 7.4

Please see the pre-release documentation here:
http://documentation.bonitasoft.com/7.4?page=release-notes

regards
Seán

PS: As this reply answers your question, please mark as resolved by ticking the tick mark on the left of this reply.

Notifications