Options
All
  • Public
  • Public/Protected
  • All
Menu

Getting started with Bryntum Scheduling Engine

Introduction

Scheduling engine is written in TypeScript. It uses mixins extensively for code structuring, instead of classic single class inheritance. Please refer to these blog posts: part1, part2 to become familiar with the mixin pattern. See also Chronograph docs

The core of the engine make use of ChronoGraph for the reactive calculations. ChronoGraph is an extremely fast, open-source, reactive computational engine. Please refer to its documentation to become familiar with the reactivity concept.

Logical structure

The scheduling logic is divided into 3 layers. Each layer extends the previous and includes all its features.

  • Scheduler basic
  • Scheduler Pro
  • Gantt

The central part of every layer, is entity called "Project". Project consists from several collections of other entities. Collections are created as instances of the Store class from the Bryntum Core package, and individual entities are represented with Model class.

The primary collections of the Project are:

The Project itself is represented with the AbstractProjectMixin. It is a regular Model, so it is capable of storing any project-wide configuration options.

The classes mentioned above are base, meaning that they are gradually extended with new features.

Scheduler basic layer

At this layer there are the following features:

  • Project has a calendar.
  • Event has a calendar.
  • Resource has a calendar
  • Events are connected with dependencies, which, however are purely visual decoration and do not affect the schedule.

The project class of this layer: SchedulerBasicProjectMixin The event class of this layer: SchedulerBasicEvent

Scheduler Pro layer

At this layer there are the following features:

  • Dependencies start affecting the schedule
  • Event has a constraint
  • Event has a percent done value
  • The event/resource assignments have "units" field

The project class of this layer: SchedulerProProjectMixin The event class of this layer: SchedulerProEvent

Gantt layer

At this layer there are the following features:

  • Project can be scheduled in backward direction
  • Project has critical paths
  • Event has effort
  • Event has one of 3 scheduling modes - "FixedDuration/FixedEffort/FixedUnits"

The project class of this layer: GanttProjectMixin The event class of this layer: GanttEvent

Creating a project

A project can be instantiated as any other class:

const project = new SchedulerProProjectMixin({
    eventsData          : [ { id : 'e1', name : 'Event1' }, { id : 'e2', name : 'Event2' } ],
    resourcesData       : [ { id : 'r1', name : 'Resource1' } ],

    assignmentsData     : [ { id : 'a1', event : 'e1', resource : 'r1' } ],
    dependenciesData    : [ { id : 'd1', fromEvent : 'e1', toEvent : 'e2' } ]
})

COPYRIGHT AND LICENSE

Copyright (c) 2018-2020, Bryntum

All rights reserved.

Hierarchy

  • GettingStartedGuide

Generated using TypeDoc