-
Notifications
You must be signed in to change notification settings - Fork 9
Experimental
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.
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.
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
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.
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
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.
< next: Templating | >