Note that there are some explanatory texts on larger screens.

plurals
  1. POExtending the Composite pattern?
    primarykey
    data
    text
    <p>I'm using the <a href="http://en.wikipedia.org/wiki/Composite_pattern" rel="nofollow">Composite pattern</a> to represent a hierarchical data structure:</p> <ul> <li>CompositeNodeA <ul> <li>Leaf1</li> <li>Leaf2</li> <li>...</li> </ul></li> <li>CompositeNodeB ....</li> </ul> <p>Each Leaf represents a particular task. At first, the user is presented with a default list of tasks for a particular scenario, the user then checks/unchecks certain tasks (e.g. using a TreeView control) and upon accepting the selection, the data is eventaully persisted to an XML file. This data is later used by either (1) an engine that completes the checked tasks or (2) the UI to display list of tasks that have been selected.</p> <p>In some scenarios, there are certain (complex) tasks that require additional "internal" tasks as prerequisites for the engine to generate the complex task. However I do not wish to display those "internal" tasks to the user, but they are still used by the engine and are written to the XML file.</p> <p>Knowing that I can have a large number of different scenario types (each scenario has its own XML file), each with a completely different list/arrangement/default selection of tasks, and different "internal" tasks based on certain selections of some tasks, how can I implement the interface between the reading/writing of the XML file and the UI + Engine ? One that hides the "internal" tasks from the UI, yet keeps track of them by writing them to the XML file, and one that allows different customizations on a scenario type basis ?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload