First Application - Making Sure I have the Architecture Right

Hi all,

SO I am new to Outsystems and a little over 50% the training on the web development training.  All and all seems fairly straight forward through the tutorials so I want to start in parallel with the real application driving the teaching for me.  It is for my business and not looking to develop beyond that.

I of course want to start small with a limited feature set for project management but I am looking long term for a tool that can replace several non-integrated applications we use.

So I read a lot on the 4 layer canvas and really want to ensure I am organizing this right to start.  Easy now since it will be small but ultimately if it becomes big not that way...

I am not integrating with 3rd party services so I would think I do not need that "4th" layer.  But for the 3rd layer I would need all of my entities for the application.  Is there any guide to a single module vs multiple module development?  I would imagine as I grow the application these entities will be interdependent.  But as one module it might get big on the entity side.

And for the UI I am still struggling with the orchestration vs UI layer.  Any better examples on how I might implement such a tool?

Long term is this is going to be Project Management + CRM tool to combine our office services into one place.  With a  strong notification and communication component to allow people to communicate thoughts without going to email around a project.

Hi Ivan,

Since you are new to outsystems I don't think you need to care to have all the layers right now. Just make sure you divide the concepts in different modules. For example Client, Product, Store. And everything (screens, actions, tables) that are link to that concept you you add to the respective module. You shouldn't have circular references between this modules. If you start having than maybe you should start thinking in another layers.

When the system grows and you start getting more knowledge will be very easy to create the other layers as long you separate all the concepts correctly.

Regards,

Marcelo 

Thanks all for the responses.....  I decided to take some time out to put together a visualization of what is in my head first to ask the question does this seem to be on the right track and second so I can have a printed guideline and not just get started randomly developing all over the place.

For the first step all I want to do is create (5) basic structures to my application with SUPER simple functionality of creating objects, displaying them, and editing details for each of them.  Once I get that done I figure I can take one by one and start to really develop out a lot of the details and functionality one at a time...  But this should allow me to stay focused on the task at hand (fingers crossed).


I am thinking each of these represent a separate module and within the modules are either the Entities or Screens (depending on what side of the canvas I am in).  All of this within one project....  This all seem to make sense?

My only question is a few modules have some duplicate Entities concepts within them...  For example my customer, vendor, and employee modules all have "Person" entities with Customer and Vendor also having a "Company" entity.

So do I duplicate those entities in each module so the data is limited to that scope (i.e. the Customers Person entity would have all of my Customers in it, Vendor Person entity vendors, etc.) or should I create another Module for Contact Management (in my second line in my chart) and have the CustomerManagement and VendorManagement modules reference that?  This way simplifying the development and leveraging a reusable part?  I am thinking the latter but not 100% sure.

Ivan Weiss wrote:

Thanks all for the responses.....  I decided to take some time out to put together a visualization of what is in my head first to ask the question does this seem to be on the right track and second so I can have a printed guideline and not just get started randomly developing all over the place.

For the first step all I want to do is create (5) basic structures to my application with SUPER simple functionality of creating objects, displaying them, and editing details for each of them.  Once I get that done I figure I can take one by one and start to really develop out a lot of the details and functionality one at a time...  But this should allow me to stay focused on the task at hand (fingers crossed).


I am thinking each of these represent a separate module and within the modules are either the Entities or Screens (depending on what side of the canvas I am in).  All of this within one project....  This all seem to make sense?

My only question is a few modules have some duplicate Entities concepts within them...  For example my customer, vendor, and employee modules all have "Person" entities with Customer and Vendor also having a "Company" entity.

So do I duplicate those entities in each module so the data is limited to that scope (i.e. the Customers Person entity would have all of my Customers in it, Vendor Person entity vendors, etc.) or should I create another Module for Contact Management (in my second line in my chart) and have the CustomerManagement and VendorManagement modules reference that?  This way simplifying the development and leveraging a reusable part?  I am thinking the latter but not 100% sure.

And just one more bit of information....  Thinking about an order...  Each order will belong to both a project and a customer.  A project will also belong to a customer.  So there are some horizontal references In that structure as well I did not draw out.


Hi Ivan,

If the entities have the exact same name is a good clue that you should only have one. As you said a way of accomplish this is to have another module with this entity and male the other modules reference this one.

For the architecture presentation normal I use this component.

Regards,

Marcelo

Marcelo Ferreira wrote:

Hi Ivan,

If the entities have the exact same name is a good clue that you should only have one. As you said a way of accomplish this is to have another module with this entity and male the other modules reference this one.

For the architecture presentation normal I use this component.

Regards,

Marcelo

Thanks!