In a Solution what's the difference between a Component and a Dependency?

In a Solution what's the difference between a Component and a Dependency?

  
What should I include in the Components of a Solution? Should I include all the Dependencies in the Components, extensions also included?
Thanks.
A component is a content element or applications, it can consist of a single eSpace application or multiple eSpaces and extension(s) packaged into a solution.

Dependency: If an  eSpace or extension has an dependency it means that it relies on another eSpace or extension to form parts of its functionality.

Example A book is dependent on paper, ink and glue etc...to form the pages of the book, otherwise it can not become a book and can not function as a book.

To answer your question, it seems like you want to create a solution? In this case you can have 1  "component" or many components apart of a single solution. When one or more of your solution components is dependent on another component it would then be added as a dependency. 

Like the book example, if your solution is "book" you add the component "paper" it would then add a dependency component "ink".

---
Your solution should include all necessary components and dependency, that you have created to form your solution. however if it is dependent on a community component such as EnterpriseManager and requires the use of extensions such as HTTPRequestHandler, Random etc you should not include this apart of your solution, instead make note in the solution requirements that your solution requires "EnterpriseManager".
I've run into this question again...

Example:
Suppose I have created an espace "espace_one" that uses the extension Random.
This espace_one is consumed by two application espaces, espace_A and espace_B.
Each espace is a _component_ of its own solution:
espace_A -> solution_A
espace_B -> solution_B

How should I consider "espace_one" for each solution, since it is consumed by espace_A and espace_B?...
1-Should I consider it as a _component_ for both solutions?
2-Should I only consider it as a _component_ for one of the solutions, for example, solution_A?
3-Should I not consider it as a _component_ for either solution (A and B) and instead consider it as a component of a third "shared" solution "solution_3", and note somewhere that solution_A and solution_B depend on the shared solution_3?
4-???
Hi Tiago,

First of all, to better understand what's the best answer to give you, I'd like to understand what you're trying to do.

You should add to your Solution all eSpaces or extensions that you want to store, mandatorily, in a solution, for copying to other machine, backing up or to revert to a previous version. I would say that the "mandatorily" part is the focus here.

Suppose your eSpace_A and eSpace_one example. And let's name them, for the sake of readability here.

Let eSpace_A be called MessagingClient , and eSpace_one is called EmailConnector.

Let's assume that the MessagingClient eSpace references EmailConnector, and EmailConnector is an eSpace that implements all the e-mail sending that happens.

Let's suppose that you want to create a solution to store the current version of the MessagingClient, either because you want to revert to it in the future, because of backup purposes, or because you want to migrate it to a new server.  You will create a Solution - MessagingSolution - and add the eSpace MessagingClient to it - and just that. The EmailConnector eSpace will be a dependency, since the version you are storing in this solution's version requires it to run.

Now suppose that you just migrated to 5.x, where you now have native support for e-mails in the Agile Platform. That being said, in recent developments of the MessagingClient, you no longer need the EmailConnector eSpace because you use the Agile Platform's E-mail functionality.

When you create a new solution version, it will no longer add EmailConnector as a dependency, since you'll no longer need it for your MessagingClient to run, to be backed up, to be migrated to a new server, or whatever.

That's my rule of thumb for including it as a component or as a dependency. Only include the mandatory eSpaces that you want to copy to other machine, back up or to revert to a previous version, or by other terms, the main eSpaces for the applications that you want to store in it. The Agile Platform will bring over the rest.

Does this answer your question, or make it somehow clear? I'm not really much of a semanthics guy :)

Regards,

Paulo Tavares
Hello Paulo.
Thank you for your reply. It was helpful.

What I'm trying to understand is what to include in the components of a solution because we have more than one solution that uses "util" espaces that we also implement.

We are having some strange behavior when adding a component to an existing solution because the dependencies are not updated... This should be automatic, right? We are checking the problem. 
 
I have one question:
In your example, if you migrate the MessagingSolution to another new machine, before you publish this solution, you previously had to publish its dependencies, in this case, the espace EmailConnector, right?
Hi Tiago,

That's exactly the thing: you don't! The fact that it is a dependency means that the solution will automatically include it in the package, and publish it.

In the second scenario, when you no longer need it, if you create a new solution version, it no longer is a dependency, and it is no longer included in the solution.

This was made so that you don't have to worry about remembering all eSpaces and extensions that are needed for your applications to run - it does so automatically!

Regards,

Paulo Tavares
Ok, now I understand.

But we are having some problems with one of our solutions, because despite the fact that at the moment it has some dependencies, as we see it in Service Center, these dependencies are not included in the solution when it is downloaded, only the components. Therefore my previous question.

Thank you for your help.
Oh, I see...

Well, when you create a solution version, I was assuming that when you download one version of a solution, all the eSpaces and dependencies would be downloaded as well.

If that's not happening, then either there's an error - which you should report - or the "dependencies" that aren't being included aren't really referenced by any of the eSpaces in the solution.

Regards,

Paulo Tavares
Just noticed something:

1-If you enter in a particular version of a solution and click the download button, the downloaded solution file only contains the components, and not the dependencies.

2-Also, on the screen of the versions of a solution, there is check box, "Include Dependencies in download", that enables to include or not the dependencies in the download of a solution version.
Well then, that's it. That way it works as I mentioned, right?

Hope that solves your problem.

Regards,

Paulo Tavares