Skip to content
Levi Starrett edited this page Feb 20, 2021 · 5 revisions

Experimental Features

There are a handful of experimental/incomplete features lingering around Ciera. Most of these had to do with a demo produced in 2018 where Ciera was used to generate code for the AWS cloud architecture. Activities were run in AWS Lambdas, DynamoDB was used for instance population persistence, and AWS API Gateway was used to plumb components together through HTTP routes.

The demo presentation can be found here and demo video here

This chapter will be brief as there is no point in detailed documentation on features that don’t work — the main point is to know that they exist. Some of these features are in release builds of Ciera, but others only exist as experiments in the src-other directory.

Asynchronous applications

Partial support for generating asynchronous applications is available through a mark. Typically an xtUML architecture will have some sort of long running dispatch loop (whether it is system-wide or more granular) that handles incoming stimuli (port messages and delayed events). Each time an outside stimulus is handled, the resulting generated events are handled until the system quiesces.

An async application responds to these outside stimuli by dynamically loading to handle a single request and then terminating after the transaction is completed instead of being a long running process. Thousands of instances of these applications could be deployed in a distributed architecture and perfectly respond to fluctuations in system load without any overhead during quiet times.

To turn on generation of async applications, configure the following mark

*,AsyncApplication,*,true

Amazon DynamoDB instance loader/dumper

A basic implementation of a DynamoDB instance loader/dumper was implemented. It was not fast and it had many bugs. It was essentially a port of the SQL instance loader/dumper with one key difference. It was transactional, meaning each serialization only dumped the delta between the final instance population and what was loaded at the beginning.

This project has not been maintained, but the old source code can be found in src-other at the root of the main repository.

HTTP endpoints

Another feature related to distributed asynchronous applications was HTTP endpoints. This mark allowed ports to specify an HTTP endpoint in lieu of a satisfaction with another port. Outbound messages would be serialized to JSON format and sent to the marked HTTP endpoint where they would be routed to a component to handle them.

To enable this feature for a port, add the following mark:

<path>,HttpEndpoint,Port,<url>
ex.
Tracking::Tracking::LOC,HttpEndpoint,Port,https://7t6vbnkhn4.execute-api.us-east-1.amazonaws.com/test

Ciera Maven archetype

A non-AWS related experimental feature is the Ciera Maven archetype project. Maven provides a mechanism for generating "template" projects to help users get started with a plugin or other tool. This would allow a user to run a maven command, enter a few parameters and have a new Ciera project set up and ready to build without having to mess with the dirty details of the pom.xml file all the time (or more likely, just copy and paste from an existing project!)

I do intend to finish this project, however, it is not ready at the moment. The existing source can be found in src-other/maven/ciera-maven-archetype at the root of the main repository.

Clone this wiki locally