Hello Everyone,

Data loading in OFBiz is quite fragile. A small change could crash the
system and finding out the reason can be difficult. I really felt the
pain of this when trying to disentangle the framework from data
dependencies on plugins [1].

I've been thinking about a solution to reduce fragility, and here are
my thoughts:
- The less data files the better.
- The less data the better.
- The less distance (e.g. same directory) between data files the better.
- No circular dependencies (file dependencies should be like a tree).
- Fail fast [2].

Therefore, I suggest the following action points:
- Create a directory structure similar to [3] in the datamodel component.
- For any data that two or more files depend on, immediately move it
to the common-<reader>.xml file.
- For any data that does not belong to any domain (e.g. marketing,
content, etc ..) move it to the common-<reader>.xml.
- Maintain a strict dependency hierarchy of demo -> seed -> seed-initial.
- Gradually and carefully move data from all applications to the
datamodel component as per above guidelines.
- Cleanup and refactor the data as we move it including any tests that
depend on it.

What do you think of this proposal? Does it sound reasonable? Also
given the size of what I'm proposing I think we need multiple people
to work on this. So is anyone interested in taking part in this
initiative?

Cheers,

Taher Alkhateeb

[1] https://issues.apache.org/jira/browse/OFBIZ-9322
[2] 
https://lists.apache.org/thread.html/a18b5d4086a07ff34a0cb950999e8f8e869a6aa7efa2fc866a75a7b6@%3Cdev.ofbiz.apache.org%3E
[3] directory structure:
data/
├── demo
│   ├── accounting-demo.xml
│   ├── common-demo.xml
│   ├── content-demo.xml
│   ├── humanres-demo.xml
│   ├── manufacturing-demo.xml
│   ├── marketing-demo.xml
│   ├── order-demo.xml
│   ├── party-demo.xml
│   ├── product-demo.xml
│   ├── shipment-demo.xml
│   └── workeffort-demo.xml
├── seed
│   ├── accounting-seed.xml
│   ├── common-seed.xml
│   ├── content-seed.xml
│   ├── humanres-seed.xml
│   ├── manufacturing-seed.xml
│   ├── marketing-seed.xml
│   ├── order-seed.xml
│   ├── party-seed.xml
│   ├── product-seed.xml
│   ├── shipment-seed.xml
│   └── workeffort-seed.xml
└── seed-initial
    ├── accounting-seed-initial.xml
    ├── common-seed-initial.xml
    ├── content-seed-initial.xml
    ├── humanres-seed-initial.xml
    ├── manufacturing-seed-initial.xml
    ├── marketing-seed-initial.xml
    ├── order-seed-initial.xml
    ├── party-seed-initial.xml
    ├── product-seed-initial.xml
    ├── shipment-seed-initial.xml
    └── workeffort-seed-initial.xml

Reply via email to