libSmalldb  v0.2
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JsonDirBackend Class Reference

Smalldb Backend which loads state machine definitions from a directory full of JSON files and GraphML files. More...

Inheritance diagram for JsonDirBackend:
Inheritance graph

Public Member Functions

 __construct ($options, $context, $alias)
 Constructor compatible with cascade resource factory.
 
 createListing ($filters, $filtering_flags=0)
 Creates a listing using given filters. More...
 
 getKnownTypes ()
 Get all known state machine types. More...
 
 describeType ($type)
 Describe given type without creating an instance of related state machine. More...
 
 inferMachineType ($aref, &$type, &$id)
 Infer type of referenced machine type using lookup table. More...
 
- Public Member Functions inherited from AbstractBackend
 __construct ($options, $context, $alias)
 Initialize backend. More...
 
 getAlias ()
 Get current alias.
 
 getContext ()
 Get context object (whatever it is).
 
 inferMachineType ($aref, &$type, &$id)
 Infer type of referenced machine type. More...
 
 getCachedMachinesCount ()
 Get number of instantiated machines in cache. More...
 
 getMachine ($type)
 Get state machine of given type, create it if necessary.
 
 ref ($arg1)
 Get reference to state machine instance of given type and id. More...
 
 nullRef ($type)
 Get reference to non-existent state machine instance of given type. More...
 
 flushCache ()
 Flush caches of all machines.
 
 createListing ($query_filters, $filtering_flags=0)
 Creates a listing using given query filters. More...
 
 getKnownTypes ()
 Get all known state machine types. More...
 
 describeType ($type)
 Describe given type without creating an instance of related state machine. More...
 

Protected Member Functions

 createMachine ($type)
 Factory method: Prepare state machine of given type - a model shared between multiple real statemachines stored in backend. More...
 
 loadGraphMLFile ($graphml_filename, $graphml_group_name=null)
 Load state machine definition from GraphML created by yEd graph editor. More...
 
- Protected Member Functions inherited from AbstractBackend
 createMachine ($type)
 Factory method: Prepare state machine of given type - a model shared between multiple real statemachines stored in backend. More...
 

Protected Attributes

 $base_dir
 Name of directory which contains JSON files with state machine definitions.
 
 $machine_type_table
 Static table of known machine types. More...
 

Detailed Description

Smalldb Backend which loads state machine definitions from a directory full of JSON files and GraphML files.

JsonDirBackend supports following file types:

Member Function Documentation

createListing (   $filters,
  $filtering_flags = 0 
)

Creates a listing using given filters.

/

Todo:
Support complex filtering over multiple machine types.

Here is the call graph for this function:

getKnownTypes ( )

Get all known state machine types.

Returns array of strings.

describeType (   $type)

Describe given type without creating an instance of related state machine.

Intended as data source for user interface generators (menu, navigation, ...).

Returns machine description as propery-value pairs in array. There are few well-known property names which should be used if possible. Any unknown properties will be ignored.

array( // Human-friendly name of the type 'name' => 'Foo Bar', // Human-friendly description (one short paragraph, plain text) 'desc' => 'Lorem ipsum dolor sit amet, ...', // Name of the file containing full machine definition 'src' => 'example/foo.json', ... )

inferMachineType (   $aref,
$type,
$id 
)

Infer type of referenced machine type using lookup table.

Reference is pair: Table name + Primary key.

Returns true if decoding is successful, $type and $id are set to decoded values. Otherwise returns false.

Since references are global identifier, this method identifies the type of referenced machine. In simple cases it maps part of ref to type, in more complex scenarios it may ask database.

In simple applications ref consists of pair $type and $id, where $id is uniquie within given $type.

$aref is array of arguments passed to AbstractBackend::ref().

$type is string.

$id is literal or array of literals (in case of compound key).

createMachine (   $type)
protected

Factory method: Prepare state machine of given type - a model shared between multiple real statemachines stored in backend.

Do not forget that actual machine is not reachable, you only get this interface.

This creates only implementation of the machine, not concrete instance. See AbstractMachine.

Returns descendant of AbstractMachine or null.

Here is the call graph for this function:

loadGraphMLFile (   $graphml_filename,
  $graphml_group_name = null 
)
protected

Load state machine definition from GraphML created by yEd graph editor.

See also
http://www.yworks.com/en/products_yed_about.html

Here is the caller graph for this function:

Member Data Documentation

$machine_type_table
protected
Initial value:
= array(
)

Static table of known machine types.

Inherit this class and replace this table, or use 'machine_types' option when creating this backend.

Each record is also passed to AbstractMachine::initializeMachine().