System Runtime

System Runtime

  • Languages iconENGLISH
    • Română
    • Help Translate
  • SUPPORT
  • GITHUB

›Examples

Introduction

  • What is System Runtime ?
  • System Runtime architecture
  • What is Design First ?
  • Overview

Guides

  • Quick Start
  • How to install System Runtime
  • Design your model
  • Create components
  • Manage your components
  • Bundle your system
  • Extend System Runtime
  • Go deeper

Examples

  • A basic "hello world"
  • Create a bundle
  • Install a bundle client-side
  • Install a bundle in HTML
  • Install a bundle server-side
  • Package a bundle
  • Create a component
  • Create new types
  • Create a one to one relationship
  • Create a one to many relationship
  • Navigate through the model
  • Inheritance between components
  • Listen to a change of state of a component
  • Use System Runtime NoSQL Database
  • Object-Document Mapper in action
  • Use System Runtime core apis
  • Use System Runtime history apis
  • Quick Start example

APIS

  • Component Class
  • runtime Component
  • metamodel Component
  • logger Component
  • db Component
  • history Component
  • Document Collection

About

  • Who is behind System Runtime ?
  • License

Inheritance between components

Inheritance is defined at schema level.

When a method is called:

  • System Runtime will search if there is a behahior for the corresponding method (i.e. state) and instance,
  • if not it will search a behahior for the corresponding method (i.e. state) and class name and
  • if not it will search a behahior for the corresponding method (i.e. state) at parents class level.
// create the system
const system = runtime.system('example12');

const metamodel = runtime.require('metamodel');

// define a Person
metamodel.schema('Person', {
  'firstName': 'property',
  'lastName': 'property',
  'getFullName': 'method'
});

// define a Teacher
metamodel.schema('Teacher', {
  '_inherit': ['Person'] // inherit from Person
});

metamodel.create();

// Implement 'getFullName' method for Person class
const Person = runtime.require('Person');

Person.on('getFullName', () => this.firstName() + ' ' + this.lastName());

// create a Teacher
const Teacher = runtime.require('Teacher');

new Teacher({
  '_id': 'eikichi',
  'firstName': 'Eikichi',
  'lastName': 'Onizuka'
});

system.on('start', () => {
  const eikichi = this.require('eikichi');

  // we can invoke 'getFullName' method on a Teacher instance
  console.log(eikichi.getFullName());
});

// run the system
system.start();

Version compatibility

Remember that the example works both on server and browser.

← Navigate through the modelListen to a change of state of a component →
System Runtime is distributed under Apache License 2.0 - Copyright © 2024 Erwan Carriou