Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Adds ref to OFBIZ-3500

componentDependencies2.png

Table of Contents

Component Sets

There are a small number of component sets current in OFBiz (from lowest-level to highest-level):1.

  1. framework

...

  1. applications

...

  1. plugins

Dependencies between components in these sets must ONLY go up the list. For example components in specialpurpose plugins can depend on components in applications, but components in applications can not depend on components in specialpurposeplugins.

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyOFBIZ-3500
addresses those issues.

Components Within Sets

framework

The framework is the underlying data structures and utilities that supply the essential common features used by the base applications and the extended components. These higher level components will have many dependencies on the framework components. There should be no dependencies in the framework on other parts of OFBiz but a few have crept in. They are show shown as the gray arrows in the diagram.
There should be a full discussion in on the mailing list before any new dependencies are added. Actually, they should be avoided and even an effort to remove the existing one would be welcome. Framework-only distribution is the first step in this direction...

An overview of the components in the framework stack can be found here:

Framework stack

base applications

While components can depend on one another in the base applications set they should follow the established priority of dependencies. In the diagram below you see existing dependencies and the component dependency priority going from the top of the page down (in other words components higher on the page depend depends on components lower on the page).

Whenever some data structure or feature could go in multiple components , or could depend on elements in multiple components, the design should ensure that lower level components don't depend on something in the higher level ones.

The gray arrows in the diagram represent dependencies that violate the rule and are subject of on-going ongoing discussions about how to fix them.

Digraph
outputsvg
compound=true;
fontname="helvetica-bold";
node [shape=plaintext fontname="helvetica-bold" ];
subgraph clusterBaseApplications{
style=filled; color=cornsilk;
 
BaseApplications [shape="plaintext" label="base applications"];


node [shape=plaintext fontname="helvetica-bold" ];
node [color=cornsilk fontcolor=blue];
{rank=same; humanres; marketing;}
{rank=same; order;}
{rank=same; workeffort;}
{rank=same; accounting;manufacturing;}
{rank=same; party;}
{rank=same; product;}
{rank=same; content;}
BaseApplications->humanres [style=invis weight=0];
BaseApplications->marketing [style=invis weight=0];
}
subgraph clusterFramework{
style=filled; color=cornsilk;
nodesep=.25;

Framework [shape="plaintext" label="framework"];
node [shape=plaintext fontname="helvetica-bold" ];
node [color=cornsilk fontcolor=darkgreenpurple];
"entity(ext)";
service;
webapp;
security;
common;
Framework->"entity(ext)" [style="invis"];
Framework->service [style="invis"];
Framework->webapp [style="invis"];
}
subgraph clusterextendedclusterExtended {


Extended [shape="plaintext" label="extended"]; 
style=filled; color=cornsilk;
node [color=cornsilk fontcolor=firebrick];
specialpurpose;
"hot deploy";
}



	subgraph clusterPlugins {
	plugins [shape="plaintext" label="plugins"]; 
	style=filled; color=ivory;
	node [color=cornsilk fontcolor=orange];
	eCommerce;
	}
Extended->plugins[style="invis"];
plugins->eCommerce [style="invis"];
}
//{rank=same; Extended}
//{rank=same; Framework; BaseApplications}
edge [color=blackdarkgreen weight=1];
marketing->order;
marketing->product;
edge [color=seagreen weight=1];
order->workeffort;
order->accounting;
order->party;
order->content;
order->product;
humanres->accounting;
humanres->party;
manufacturing->product;
workeffort->accounting;
workeffort->party;
workeffort->content;
workeffort->product;
workeffort->manufacturing;
accounting->party;
accounting->product;
accounting->manufacturing;
accounting->workeffort;
product->party;
product->content;
"entity(ext)"->common;
service->common;
service->security;
webapp->common;
webapp->security;
edge [color=grey weight=10];
order->marketing;
party->marketing;
Framework->party[ltail=clusterFramework, sametail=t1];
Framework->content[ltail=clusterFramework, sametail=t1];
Framework->product[ltail=clusterFramework, sametail=t1];
Framework->accounting[ltail=clusterFramework, sametail=t1];

edge [color=salmon weight=0];
product->eCommerce [fontcolor="salmon", label="OFBIZ-6110", samehead=h2];
order -> eCommerce [fontcolor="salmon", label="OFBIZ-6110", samehead=h2 ];

BaseApplications->Framework[arrowsize=31,color="red",ltail=clusterBaseApplications, lhead=clusterFramework  weight=10];
Extended->BaseApplications[arrowsize=31,color="red",ltail=clusterExtended,  lhead=clusterFrameworkclusterBaseApplications weight=10];
Extended->Framework[arrowsize=31,color="red",ltail=clusterExtended, lhead=clusterBaseApplicationsclusterFramework weight=10];





 

 

...

An overview of the base applications can be found here:

Base Application stack

Plugins

Components within the specialpurpose plugins set should not depend on each other. If there is a need for components in this set to depend on something in another set, that something should be put into the most appropriate component in the applications set and both specialpurpose plugins components can depend on the applications component.

hot-deploy

We have currently a dependency of the applications components from, at least, the ecommerce component with regards to the demo data, see 

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyOFBIZ-6110
for details.

An overview of the plugins applications can be found here:

User-defined Hot deploy consists of user-define components that are not part of OFBiz. Components in this set are created as add-ons to OFBiz, so it is up to the author to manage it. The guidelines suggested for the specialpurpose component set , as plugins to OFBiz. The same guidelines are recommended here as well.

Plugins stack

Other

...

information

In attachments of The Framework-only distribution there is an Excel file with some dependencies not figured above. I did not check though that all the ones above are in the Excel file.. page is related and about "features that should be available in the framework-only OFBiz distribution".