external master data in alfresco: integrating and keeping metadata consistent across multiple...

49
External Master Data in Alfresco: Integrating and Keeping Metadata Consistent Across Multiple Systems Oksana Kurysheva @aviriel Alexey Vasyukov @avasyukov

Upload: itd-systems

Post on 21-Jun-2015

605 views

Category:

Business


5 download

DESCRIPTION

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.

TRANSCRIPT

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

External Master Data in Alfresco:

Integrating and Keeping Metadata

Consistent Across Multiple Systems

Oksana Kurysheva @aviriel Alexey Vasyukov @avasyukov

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

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

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

Questions for the next 39 minutes

What is Master Data? 1

2

3

4

Storing Master Data in Alfresco

External Master Data

Complicated cases

5 Conclusion

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

What is Master Data? 1

2

3

4

Storing Master Data in Alfresco

External Master Data

Complicated cases

5 Conclusion

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

What is Master Data?

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

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.

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

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

3.2

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

Constraints in the content model

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

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.

-

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

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

5 Conclusion

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

<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)

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

Data-list based implementation (3/5)

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

Solves basic issue quickly

• Business users can edit constraints in browser!

Data-list based implementation (4/5)

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

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)

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

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

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

External Master Data

Assumptions:

• Master data is in 3rd party systems.

• These systems have remote APIs.

Let's query them for reference data.

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

Architectural Choice

Share Tier vs Repo Tier

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

Architectural Choice: Share-tier

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

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>

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

Architectural Choice: Repo Tier

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

Architectural Choice: Repo Tier

<constraint name="alvexdt:docStatus"

type="com.alvexcore.repo.masterdata.MasterDataConstraint">

<parameter name="dataSourceName">

<value>Test</value>

</parameter>

</constraint>

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

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

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

External Master Data

Quite obvious idea becomes tricky:

• Live data vs Cached data

• Performance and bottlenecks

• Changes in reference data

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

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

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

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.

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

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

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

Implementation Details (1/5)

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

Implementation Details (2/5)

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

Implementation Details (3/5)

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

Implementation Details (4/5)

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

Implementation Details (5/5)

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

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

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

External Master Data: Demo

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

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

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

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)

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

Handing Tree-Like Structures

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

Constraints Inter-Dependencies

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

One-To-Many Relations

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

What is Master Data? 1

2

3

4

Storing Master Data in Alfresco

External Master Data

Complicated cases

5 Conclusion

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

Fear and Loathing Under The Hood

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

Getting forms

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

Getting forms

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

Validations on Node Create/Edit

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

Validations on Node Create/Edit

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

Fear and Loathing Under The Hood: Summary

Overloaded components:

• /api/formdefinition

• MasterDataAwareScriptFormService

• MasterDataAwareIntegrityChecker

• MasterDataAwarePropertiesIntegrityEvent

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

Roadmap

• Completely solve Complicated Cases

• Extract Master Data from Alvex to a

separate extension

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

Resources

GitHub Repo:

https://github.com/ITDSystems/alvex

Contacts:

@aviriel & @avasyukov & @alvexsoftware

[email protected]