Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

External Master Data in Alfresco: Integrating and Keeping Metadata Consistent Across Multiple Systems

1,610 views

Published on

Real life content is always tightly integrated with master data. Reference data to be used for the content is usually stored in a third-party enterprise system (or even several different systems) and should be consumed by Alfresco.

Published in: Business
  • Be the first to comment

  • Be the first to like this

External Master Data in Alfresco: Integrating and Keeping Metadata Consistent Across Multiple Systems

  1. 1. External Master Data in Alfresco: Integrating and Keeping Metadata Consistent Across Multiple Systems Oksana Kurysheva @aviriel Alexey Vasyukov @avasyukov
  2. 2. 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 ITD Systems
  3. 3. Questions for the next 39 minutes 1 What is Master Data? 2 3 4 Storing Master Data in Alfresco External Master Data Complicated cases 5 Conclusion
  4. 4. 1 What is Master Data? 2 3 4 Storing Master Data in Alfresco External Master Data Complicated cases 5 Conclusion
  5. 5. What is Master Data?
  6. 6. 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.
  7. 7. 1 What is Master Data? 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 3.2
  8. 8. Constraints in the content model
  9. 9. 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. -
  10. 10. 1 What is Master Data? 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 5 Conclusion
  11. 11. 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 • Alvex releases older 2.1
  12. 12. <appearance> <field id=“dm:color”> <control template=“/form-controls/dynamic-dropdown.ftl”> <control-param name=“pickListName”>Color</control- param> </control> </field> </appearance> Data-list based implementation (2/5)
  13. 13. Data-list based implementation (3/5)
  14. 14. Solves basic issue quickly •Business users can edit constraints in browser! Data-list based implementation (4/5)
  15. 15. Updating a list of values Performance Permissions Share-Tier No native constraint Still no sync with external Master Data - Data-list based implementation (5/5)
  16. 16. 1 What is Master Data? 2 3 Storing Master Data in Alfresco The Good The Bad 3.1 3.2 4 Complicated cases 5 Conclusion External Master Data
  17. 17. External Master Data Assumptions: • Master data is in 3rd party systems. • These systems have remote APIs. Let's query them for reference data.
  18. 18. Architectural Choice Share Tier vs Repo Tier
  19. 19. Architectural Choice: Share-tier
  20. 20. 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>
  21. 21. Architectural Choice: Repo Tier
  22. 22. Architectural Choice: Repo Tier <constraint name="alvexdt:docStatus" type="com.alvexcore.repo.masterdata.MasterDataConstraint"> <parameter name="dataSourceName"> <value>Test</value> </parameter> </constraint>
  23. 23. 1 What is Master Data? 2 Storing Master Data in Alfresco 3 The Good The Bad 3.1 3.2 4 Complicated cases 5 Conclusion External Master Data
  24. 24. External Master Data Quite obvious idea becomes tricky: • Live data vs Cached data • Performance and bottlenecks • Changes in reference data
  25. 25. 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
  26. 26. Performance • Constraint is expected to be extremely fast • Just reading field with list constraint with N values causes N+1 call to Constraint class. • Caching of classifiers in Repo is not enough.
  27. 27. 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
  28. 28. Implementation Details (1/5)
  29. 29. Implementation Details (2/5)
  30. 30. Implementation Details (3/5)
  31. 31. Implementation Details (4/5)
  32. 32. Implementation Details (5/5)
  33. 33. 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
  34. 34. External Master Data: Demo
  35. 35. 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 5 Conclusion
  36. 36. 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)
  37. 37. Handing Tree-Like Structures
  38. 38. Handing Tree-Like Structures • Jean Barmash implementation (2008) https://forums.alfresco.com/comment/80963#co mment-80963
  39. 39. Constraints Inter-Dependencies
  40. 40. One-To-Many Relations
  41. 41. 1 What is Master Data? 2 3 4 Storing Master Data in Alfresco External Master Data Complicated cases 5 Conclusion
  42. 42. Fear and Loathing Under The Hood
  43. 43. Getting forms
  44. 44. Getting forms
  45. 45. Validations on Node Create/Edit
  46. 46. Validations on Node Create/Edit
  47. 47. Fear and Loathing Under The Hood: Summary Overloaded components: • /api/formdefinition • MasterDataAwareScriptFormService • MasterDataAwareIntegrityChecker • MasterDataAwarePropertiesIntegrityEvent
  48. 48. Roadmap • Completely solve Complicated Cases • Extract Master Data from Alvex to a separate extension
  49. 49. Resources GitHub Repo: https://github.com/ITDSystems/alvex Contacts: @aviriel & @avasyukov & @alvexsoftware ping@itdhq.com

×