Relationship with POCO DataSet
POCO DataSet and BPUA belong together, but they are not the same thing. The earlier documentation already explains POCO DataSet as a context and merge model. This page positions it specifically within the architectural structure of BPUA.
BPUA provides the execution architecture:
POCO DataSet provides a state and merge model suitable for long-lived, process-driven applications:
BPUA needs an explicit transition context that can survive refresh, save, rollback, and cross-layer processing. POCO DataSet is well suited to become the data-bearing part of that context. That is why the two technologies complement each other so naturally.
POCO DataSet also supports a useful contract-oriented pattern: the same physical data table can be interpreted through different interface contracts. This is especially valuable when a transition context carries aggregated data.
A transition context may contain one table with all information required for a transition. The table name remains the human-readable marker that describes the business purpose of the data, while different BPUA layers or handlers can read the same row through different interface views.
A State Logic layer may read display-oriented fields. A Business Logic layer may read validation-oriented fields. A Data Processing or Data Access layer may read persistence-oriented fields. The transition context still carries one structured data table, but each layer receives the contract view it needs.
This keeps data movement simple while keeping business meaning explicit. BPUA does not need a different DTO family for every layer involved in transition execution. The same data can move through the process once and be interpreted according to the contract required by each consumer.
BPUA tells the system how to execute business transitions. POCO DataSet helps the system carry and evolve the business state that those transitions operate on.
Table of Content BPUA Chapter Previous: Exit States Next: Deterministic Business Process Runtime
Business Process Programming in .Net
© 2004-2026 Laskarzhevsky Software Inc.
Unless otherwise noted, the content of this website is licensed under the
Creative Commons Attribution 4.0 International License (CC BY 4.0).
Code examples are provided under the MIT License.
You are free to share and adapt the material provided that appropriate
credit is given and any modifications are clearly indicated.
The information provided on this website is for educational purposes only.
The author and publisher make no warranties regarding the completeness
or suitability of the information and are not responsible for any damages
resulting from its use.