When I develop payroll, accounts, sales, inventory modules as component of my ERP system, I understand they are individual projects having component descriptor created. As a result, those components will have their respective log-in option. If I want to bring all or some of those modules under one main application, say myERP, then how can I deal with:
Use only one log-in, inside the main application myERP and bypass individual modules log-in
Run those modules (components) from the main app myERP?
The application components are needed to create reusable parts of applications. They are like full-stack libraries - you can create some project, say “Customer Management” with entities, services and UI screens, and then make it a component available for use in other applications. CUBA premium add-ons are the examples of components, just providing more generic and low-level functionality. Components must be included to the application on the development or building stage, so at runtime the application together with its components is actually a monolith.
So if you want to run separate applications with a single entry point and single-sign-on, you actually don’t need components. Of course you can still use components inside the applications, but it’s a different story. If you really want to organize your system as a set of separate applications, you actually need a single-sign-on between CUBA applications. And this ability is also comes in the platform version 6.3 - it’s just not documented yet. So in your case you will have a main application which is an entry point and perfroms user login, and a set of functional applications that will be available from the main screen of the main applications without separate login.
We will let you know when the documentation on CUBA SSO is ready.
Thank you Konstantin for the details, that is exactly what I was looking for which is coming in 6.3 version. Let me briefly explain what I am looking for in case it helps in setting an example when you are documenting.
I start with your example as starting point. Customer Management is a component where it will have everything to work as application e.g. entities, controller, screens, services etc. There will be several other components e.g. Inventory Management, Accounting, Payroll management , Accounts Receivable etc.
Situation 1:
Those components are almost independent except some touch points, Sales in Customer management will use the entities in Inventory Management, Invoice will have link with Accounts Receivable and Accounting etc. Therefore, in this case, there will be an use of Entities of Accounts Receivable in Customer Management and vice versa.
Situation 2:
In this case the standard components are extended to meet specific industry specificity. Let’s take an example to simplify. Sales Order entity is extended to two different industry category say, Make to Stock type of business and Engineer to Order types. The standard component will have standard cross industry attribute of a sales order that is common to all industries and when there is a need of specific industry, the entity, controller, screen etc. will be extended. I understand from the answer to my other question that extending screen is not possible in the studio. I’m not sure if you have any plan to include it in 6.3, if yes that will be great! If not now, documentation with a practical sample app will be helpful.
I am eagerly waiting to read and use the documentation to proceed with this approach in my development. In case you need any help in sample application featuring this, let me know (you can e-mail me).
Please keep in mind that working with multiple databases is way more complex and unreliable than with a single. Moreover, when using single database, you probably don’t need separate applications - you can just use application components on development stage and build a monolith at the end. In my opinion, this is the most sensible approach if you don’t need to scale for millions of users.
As for the final release 6.3, I hope it will be in the middle of October.
Try to clean, assemble, re-generate app-component.xml, then re-install all components. If it doesn’t help, give us more information on your components and what they contain.
Hi Konstantin
I have done what you have advised but the same! and this issue is now appearing as a little bit different issue as posted in a separate thread below when I have given further update.