Ticket #337 (accepted Enhancement)

Opened 8 years ago

Last modified 6 years ago

Editor for aggregated composites

Reported by: jri Owned by: jri
Priority: Major Milestone:
Component: DeepaMehta Standard Distribution Version: 4.0.12
Keywords: Cc: dgf, Malte, JuergeN
Complexity: 8 Area: GUI / Usability
Module: deepamehta-webclient

Description

Meanwhile the Core processes update requests where aggregated composites are involved (see #30). Now the GUI needs to be put on a par.

These operation should be possible within the parent form:

  • Assigning *existing* aggregated composite(s) to the parent topic.
  • Removing assignments of aggregated composite(s) (for "many" cardinality).
  • possibly: Creation of new aggregated composite(s) and assigning to the parent topic.

This operation will deliberately NOT be addressed:

  • Editing the *contents* of an aggregated composite within the parent form (see comments on #30). To edit the content the user is supposed to deliberately edit the composite directly (in its own form).

Change History

comment:1 Changed 7 years ago by jri

  • Milestone changed from Release 4.1 to Release 4.2

comment:2 Changed 6 years ago by Jörg Richter

Core: fix updating aggregated composites (#574).

When updating an aggregated composite no error occurs.

As a by-product of that fix you can now have aggregated composites in your model and edit such a complex topic via the Webclient. This works now for the first time with the Webclient's standard renderers (see #30).

So a first version of what we called a "Editor for aggregated composites" (see #337) is now available. However it is just in its first incarnation that will possibly not survive for long. In its current form it realizes the most cautious approach in regard of unwanted semantic side effects (see comments in #30): every time an aggregated composite is edited a new instance of the composite is created. Thus a lot of possibly useless (because unassigned) topics remain in the DB.

CHANGES

Core API: there is a new model class:

de.deepamehta.core.model.TopicReferenceModel

A reference to a topic, either by ID, or by URI.

BREAKING CHANGES

The Core Service's composite object update logic does not rely on a fallible heuristic to detect weather a TopicModel? represents actually a topic reference (based on ID and URI) but utilizes explicit TopicReferenceModel? instances for that purpose (analogous to TopicDeletionModel?).

When your plugin creates a TopicModel? object to represent a reference (e.g. to pass it to the Facet Service's updateFacet() call) you must now create a TopicReferenceModel? instead. Otherwise your update call will throw an error resp. have unexpected results.

See #574.

comment:3 Changed 6 years ago by jri

  • Status changed from new to accepted
  • Milestone changed from Release 4.2 to Release 4.1.3

comment:4 Changed 6 years ago by jri

  • Cc JuergeN added

comment:5 Changed 6 years ago by Jörg Richter

Editor for aggregated composites (#337).

You can now have aggregated composites in your data model and can edit such complex topics in the Webclient's detail panel. However, the current implementation differs from what is described in the original ticket. The current implementation is pragmatic, the usage is intuitive, and no proliferating topic copies are created. For example you can edit a Person's address right in the Person form, even if Address would be defined via Aggregation Definition.

"semantic side effects" (see comments in #30) are possible in principle but only when associations are manipulated manually. In the scenario of an aggregated Address you can assign the same Address instance to 2 persons by manually creating an association. (Note: when editing via detail panel one Address instance is currently never assigned to 2 Persons.) In that case, when you edit the Address via Person 1 in the page panel, it changes for Person 2 as well. You can consider that as a "semantic side effect".

In some cases that is exactly what you want, in others it is not. However, that's the way the Webclient works for now. Regarding development effort it reflects the most pragmatic solution. The underlying semantic problem is conceptually huge, and in the way I see it there no general solution exists except further complicating the meta model and/or the GUI, which I feel is not desirable.

Future strategy:

  • The GUI could be extended in the way described in the ticket. It could support the creation of aggregated composites that are actually shared between various parents.
  • Different form rendering and processing behavior is realizable by custom page renderers.

See #337.

comment:6 Changed 6 years ago by jri

  • Milestone Release 4.1.3 deleted
Note: See TracTickets for help on using tickets.