External Master Data in Alfresco: Integrating and Keeping Metadata Consistent Across Multiple Systems
Oksana Kurysheva @aviriel
Alexey Vasyukov @avasyukov
Who are we?
Oksana Kurysheva
@aviriel
Project Manager / Trainer / Queen of the bees
ITD Systems / Order of the Bee
Alexey Vasyukov
@avasyukov
Chief Architect / Alvex Product Manager
Questions for the next 39 minutes
What is Master Data?
1 2 3 4
Storing Master Data in Alfresco
External Master Data
Complicated cases
What is Master Data?
1 2 3 4
Storing Master Data in Alfresco
External Master Data
Complicated cases
Master data management is an integration between Alfresco and a complex set of third-party systems, that you are to meet when trying to use Alfresco in the wild.
What is Master Data?
1 2
3 4
Storing Master Data in Alfresco
Integrating Alfresco with external Master Data
Complicated cases
Out of the box implementation Data-list based implementation
5 Conclusion
3.1
Constraints in the content model
Users can
select a value from the list.
+
Master data changes quite frequently.
Business users do not like the idea to call IT every time they need new
option in the drop-down list.
What is Master Data?
1
2 Storing Master Data in Alfresco
Out of the box implementation
Data-list based implementation
3.1
3.2
3 4
Integrating Alfresco with external Master Data
Complicated cases
Data-list based implementation (1/5)
• Simple solution
• Several extensions to do it:
• Tony Parzgnat implementation
https://github.com/parzgnat/alfresco-value-assistance
• Angel Borroy implementation
https://github.com/keensoft/alfresco-datalist-constraints
<appearance> <field id=“dm:color”> <control template=“/form-controls/dynamic-dropdown.ftl”> <control-param name=“pickListName”>Color</control-param> </control> </field> </appearance>
Solves basic issue quickly
• Business users can edit constraints in browser!
Updating a list of values Performance Permissions Share-Tier No native constraint Still no sync with external Master Data
-
What is Master Data?
1 2 3
Storing Master Data in Alfresco
The Good The Bad 3.1 3.2 4 Complicated cases 5 Conclusion
External Master Data
Assumptions:
• Master data is in 3rd party systems. • These systems have remote APIs.
Architectural Choice
Architectural Choice: Share-tier <field id=“alvexdt:contract”> <control template=“/alvex-masterData-select.ftl”> <control-param name=“url”> http://www.alvexsoftware.com/files/contacts_sample.json </control-param> <control-param name=“path”></control-param> <control-param name=“label”>contactCompany</control-param> <control-param name=“value”>contactCompany</control-param> </control> </field>
Architectural Choice: Repo Tier <constraint name="alvexdt:docStatus" type="com.alvexcore.repo.masterdata.MasterDataConstraint"> <parameter name="dataSourceName"> <value>Test</value> </parameter> </constraint>
What is Master Data?
1
2 Storing Master Data in Alfresco 3 The Good The Bad 3.1 3.2 4 Complicated cases 5 Conclusion
External Master Data
Quite obvious idea becomes tricky: • Live data vs Cached data
• Performance and bottlenecks • Changes in reference data
Dilemma: Live Data vs Cached Data Always actual Simple implementation Slow network Service is unavailable? Live Data May be outdated Complex implementation Fast Always available Cached Data
Performance
• Constraint is expected to be extremely fast
• Just reading field with list constraint with N values causes N+1 call to Constraint class.
Changes in Reference Data
Update items
Processing
Updates Leave old
value in
existing fields Migrate
existing fields to the new one
Processing Deletion
Allow creating new data from Alfresco
Add new data
Changes in Reference Data
Update items
Processing
Updates Leave old
value in
existing fields Migrate
existing fields to the new one
Processing Deletion
Allow creating new data from Alfresco
Add new data
2 3 4
Storing Master Data in Alfresco External Master Data
Complicated cases
4.1
4.2
Handling Tree-Like Structures
Constraints Inter-Dependencies
4.3 One-To-Many Relations
Complicated Cases
Reference data is complex IRL: • Tree-like hierarchies
• Inter-dependencies of constraints
• One-to-many mapping (one master data object to many content object properties)
Handing Tree-Like Structures
• Jean Barmash implementation (2008)
https://forums.alfresco.com/comment/80963#co mment-80963
What is Master Data? 1
2 3 4
Storing Master Data in Alfresco External Master Data
Complicated cases
Fear and Loathing Under The Hood: Summary Overloaded components: • /api/formdefinition • MasterDataAwareScriptFormService • MasterDataAwareIntegrityChecker • MasterDataAwarePropertiesIntegrityEvent
Roadmap
• Completely solve Complicated Cases • Extract Master Data from Alvex to a
Resources
GitHub Repo:
https://github.com/ITDSystems/alvex
Contacts:
@aviriel & @avasyukov & @alvexsoftware [email protected]