🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
The Concept application WhenAndWhereProject
This page was created by Alexandra on 2017-05-26. Last edited by Wikiadmin on 2026-07-29.

You can use the WhenAndWhereProject concept application to explore how a model-driven application can plan work in time, assign it to resources, and show its location on a map; it is intended for developers learning how these concerns can be represented in MDriven.

What the concept demonstrates

WhenAndWhereProject is a conceptual application, not a prescribed application design. It uses a work-planning scenario to demonstrate how one information model can support several coordinated views of the same data:

  • A hierarchy of task groups, tasks, and work items.
  • Time-based planning with a Gantt-style view.
  • Resource scheduling, including unassigned work.
  • A map-oriented where view for a work item.
  • Detail editing for the work item, including text, dates, colour, required abilities, performers, and consumables.

For example, a work item can represent installing an antenna in London on a particular date. You can place it on the map, assign a performer and the abilities needed to do the work, and then inspect the same item in the time and schedule views.

The domain is deliberately open. The same concept can be adapted to work at sites, field-service visits, installations, inspections, or other work that has both a time and a location.

Explore the sample workflow

The walkthrough shows the following user workflow. The exact screen layout and available data are part of the concept application.

  1. Open a project and inspect its task groups, tasks, and work items.
  2. Add a work item. A work item represents work to perform at a specific point in time.
  3. Resize or move the item in the time view to change its planned span or date.
  4. Open the item with Show Work Item and enter descriptive text. You can also change its date and colour.
  5. Assign required abilities, a performer, and any consumables associated with the work item.
  6. Move the item in the map view to set its location. For example, move the item to London and change its text; the updated text is shown in the other views of the same item.
  7. Select Save to retain changes. The Save button indicates that there are changes to save.
  8. Select Cancel to discard changes made since the last save. The item returns to its prior state.
  9. Use Ctrl+Z to undo changes. The demonstration shows multi-level undo; redo is also available in the demonstrated application.

Watch the WhenAndWhere walkthrough.

Compare the planning views

View What it shows Example use
Gantt-style time view Work items positioned over time. The view supports zooming in the demonstrated application. Move an installation task to a later date and review its duration.
Schedule view Resources appear as columns, with work items arranged for each resource. Work items that have no assigned resource appear in an unassigned column. Find that one performer has overlapping work, then move a compatible work item to another performer.
Map-oriented view The location associated with a work item and its map symbol. Place a field visit at its operating site and use a symbol that identifies the type of site or equipment.

In the schedule view, you can assign a work item by dragging it to a resource column. This makes the schedule useful for finding resource overlaps and reassigning compatible work.

Model-driven techniques illustrated

The application is designed to show that the model and model-driven ViewModels carry most of the application-specific behavior. The generic code is kept separate from the information specific to task groups, tasks, work items, resources, and locations.

Derived information

A derived attribute is a model-level value calculated from other model data. In the walkthrough, the span shown for a work item follows changes to the item because it is implemented as a derived attribute. This keeps the displayed span consistent when its underlying dates change rather than requiring each view to calculate it independently.

Coordinated ViewModels

A ViewModel defines the data and interaction context presented by a view. When the text or location of a work item changes in one demonstrated view, the other views reflect that same model state. This is the key point of the sample: time, scheduling, details, and location are different representations of the same information.

Symbols and presentation

Map symbols in the concept application are implemented with XAML used by Windows Presentation Foundation (WPF). The walkthrough changes a work item's symbol from a mushroom to an antenna to demonstrate that the symbol is data-driven. You can supply your own XAML-based symbol and apply it to work items in an implementation based on this concept.

The walkthrough also demonstrates switching styles. Styling is separate from the planning and location information, so you can change the presentation without changing the underlying work-item model.

Use the concept in your own application

Use the sample as a design discussion tool before treating it as a finished solution.

  1. Identify the thing that is planned. For example, model an inspection, installation, maintenance visit, or delivery as a work item.
  2. Identify the time information that determines its position and span in a time view.
  3. Identify the location information that determines its map position.
  4. Decide which people, capabilities, and consumable items affect whether the work can be performed.
  5. Define the derived values that must remain consistent across views, such as a displayed time span.
  6. Create ViewModels that present the same work item for details, time planning, scheduling, and location.
  7. Add application-specific validation, actions, and styling for the real business case.

Do not assume that the sample's task names, symbols, fields, or workflow are required for your application. They are examples intended to make the modeling and visualization techniques visible.

Continue learning

For an orientation to MDriven terminology and learning paths, start with Documentation:GettingStarted. The Education:TheIndex groups concepts such as ViewModels, derived attributes, OCL, and state diagrams by learning level.

If you are moving a modeled application into a framework-based implementation, see Documentation:Moving your work from MDriven Designer to MDriven Framework. For Turnkey-specific samples and deployment-oriented material, see Documentation:MDriven Turnkey Series and Documentation:Turnkey sample ProjectPlanner.

See also