Docs‎ > ‎Architecture‎ > ‎

Team Development

This describes how to use Live API Creator in the context of multiple (concurrent) developers.


Key Concepts

Team Dev support is based on the following key concepts.

Admin Database

Recall that your API Definitions (resources, logic, security, filters, Data Explorer settings, etc) are stored in the Admin Database (not as files).  These settings are accessed via the Admin RESTful API.

Import / Export to JSON files

You can import / export your API project into a JSON file, which you can manage with existing tools for diffs, Source Control Systems etc.

Admin CLI

The Admin CLI provides convenient command-line access to the Admin API.  This provides one way to script import / export operations.


Project Configuration

Most of your API Definitions are contained in the export json file.  This includes code, such as JavaScript event handlers.

Loadable Logic Libraries

Logic libraries, however, necessarily live outside API definitions.  These therefore require special provisions to load and associate with API projects.

Custom Authentication Providers

These are special Logic Libraries that are configured as Custom Authentication Providers.  Such configuration must also be considered in Team Development.

Data Source Passwords

While DataSources live inside projects, exporting their passwords would constitute a security breach.  So, they are not exported.  Consequently, you must reconfigure these when importing an API, or scripting the creation of an API.


Single Disconnected Developer

The degenerate case is, of course, a single developer.   This is intended mainly for evaluations, training, and single person projects (e.g., explore a database using the Data Explorer).

The Admin database can of course be on a server, but it is usually more convenient to store it on your desktop.  Some Live API Creator packages further facilitate this by using Derby, so you don't have to install a DBMS.

In any case, you can still import/export into JSON files, and utilize SCS systems (etc) as described above.

Multiple Connected Developers

Most projects engage multiple developers.  The sub-sections (corresponding to the 1, 2, 3 in the diagram below) provide suggestions on how to coordinate their work.



Single Admin Database

In most projects, there is a shared Dev database (callout 1 in the diagram).  In parallel, you create an Admin Database.

Both accessed concurrently by multiple developers.  In addition to the SCS import / export, you may wish to back up the Admin Database.

Automatic Concurrency Management

To ensure that one Developer does not overwrite changes made by another, the system employs Optimistic Locking using the same services provided for user data.  This is at a very low level of granularity - a single rule, a single Role Permission, a single Sub Resource level, etc.

This granularity means that actual conflicts are extremely unlikely.  If they do occur, you get an optimistic locking violation when your press save.  In such cases, make a record of your work, refresh, and re-apply (considering, of course, the changes made your colleague).

Continual Automated Integration

Saves are committed instantly to the Admin Database, and visible to your colleagues.  They will be reflected in their testing.  You will see colleague's changes when you click left navigation links (Rules, Resources, etc).  You will, however, need to reload schema to see new database objects.

It is important to understand that the bulk of "integration" work is done by the system itself.  In conventional programming, dependency management is manual.  That is, each coding change must consider:
  • How is the new code to be called

  • In what order is the code executed
By contrast, Reactive Logic automates dependency management.  For example:
  • New rules and security settings are applied to all existing resources

  • New rules are automatically invoked on update requests

  • Rule execution is ordered by the system, by analyzing references to other data
As a result, it becomes safe to make and commit changes very rapidly.

Change Management - Resources

Resources provide important change isolation for client applications

Source Control Integration - API Export

As noted above (callout 2 in the diagram), you can import / export your Admin data to JSON files so they can be managed in SCS systems. 

Life Cycle - Scripting API Creation with Admin CLI

In addition (callout 3 in the diagram), you can use the Admin CLI to script the Life Cycle operations, e.g, to move systems from dev to integration to production.  An example is provided here.

Related Services

Not strictly part of Team Development, but to coordinate developer activities, the following services are available.

Change History

You can determine the Latest Changes made to your API Project.

Topics

Topics enable developers to record why a rule is defined.  This can be invaluable in gaining an understanding of a system, e.g., when considering changes.