Tip:
Highlight text to annotate it
X
Hello, I’m Pavel Vlasov. This video is quick introduction
to Amur4j
Amur4j is a modeling and code generation tool
for flow-centric development of Java-based software systems.
this fragment demonstrates how to create an Amur4j diagram
In Amur4j a software system is modeled as a directed graph with several
types of nodes and connections
The system receives input data through input ports, performs processing of the data by
passing data between nodes through connections and outputs data through output
ports
Both nodes and connections can perform data processing. Processing can be performed
concurrently in parallel threads or even in different processes on one or
multiple processing nodes
Amur4j has a minimalist modeling palette
Each model element can be customized by assigning an implementation type.
This approach allows to quickly model high level system structure and behavior
and elaborate configuration of model elements at later stages of development
In particular the minimalist palette and the flow paradigm enable
non-technical or semi-technical users to quickly grasp the modeling
notation
In project management terms the system is a project with tasks and dependencies
Those familiar with electrical engineering can think about the system
as an electric circuit where the signal travels from input to output through wires
and electronic components getting transformed along the way
Yet another metaphor is a virtual economy or factory where output
product is produced from input materials by a number of collaborating production
units – nodes.
Materials, components and finished products are delivered to and from the
production units by rivers and roads
All these metaphors reflect that simple fact that all
what computers do is taking data from input devices, processing
them and sending to output devices.
There are many different kinds of output and input devices and many different
ways to process data, but this is the gist of how computers work
Visual modeling is conducive to collaborative cross-functional
modeling sessions.
There are several ways to add model elements to the diagram.
They can be added from the palette
or from a floating toolbar
or by using connection handles and context menus to select connection
and node types. The last method is particularly interesting for modeling
flows because it allows to model “as the though flows”
Flows can be nested and organized into packages
There are two primary extension mechanisms in Amur4j.
One of them is implementation types.
The other is languages
A number of implementation types and languages is shipped with Amur4j
itself
More implementation types and languages can be added
by installing extension plugins
Amur4j has a concept of a handler.
Handler is a unit of code. Handlers can be written in different programming languages,
textual or not. In particular, in languages supported by the
Java Scripting framework. Support of multiple languages allows to leverage existing
skillsets, and to use the most suitable language for a particular task
In Amur4j data is transferred between elements through ports
and synapses. Ports define parameter and return data types for a
particular element. Synapses are responsible for parallelization, data
conversion and forward-only change propagation to prevent side effects
during parallel processing
For parameter and return data types modelers can use Java data types
or reference data types defined in ECORE generation models
It allows to easily search and reuse existing data types or model new
data types along with the flow models, perhaps extending pre-existing data
types
for example data types generated by reverse engineering an existing database
schema or mainframe data structures
Data type referencing makes it easier for semi-technical users to
understand the model and contribute to the modeling process
Amur4j is a code generator. It generates Java code from the models.
The generated code depends on a small footprint open source runtime
library
Implementation types and languages may introduce additional dependencies.
The generator also takes care of library management – it downloads dependency jars
into the lib folder and performs de-duplication
Generation to Java has a number of advantages
First of all it allows to use a huge arsenal of existing Java tools to
test, troubleshoot, debug and profile the generated system. Generated flows
can be embedded into Java code with the same ease as Java code can be
invoked from flows.
Generation instead of parsing and interpretation of the model files at
runtime and small footprint of the runtime library are instrumental in
deploying generated flows to resource constrained devices
to summarize
Amur4j is a tool for modeling software systems in which data flows
from input to output through intermediary nodes getting
transformed along the way
Minimalist modeling palette allows to quickly model high level system
behavior
Simple modeling notation is easy to grasp.
Visual modeling is conducive to collaborative modeling.
Flow model is transformed into Java code. Model elements can be customized with
implementation types and languages which can be added to the modeling
environment by installing extension plug-ins
Development process with Amur4j includes the following steps
Model the system as a set of flows and data types. Elaborate model elements by
assigning implementation types and configuring implementation types’
properties including writing code in a multitude of languages.
Install or develop additional implementation types and/or languages
as necessary. Generate code.
Integrate the generated code into a larger system or use it as a standalone
process. Build, deploy, test, debug, and profile the generated code using existing
Java tools.
There is much more to say about Amur4j, but in this video I wanted to
share with you the most important features of the product
If it’s sparked your interest you can explore the product further. Shall you have
questions which you can’t find answers for in the documentation,
post them to the discussion forum
as the next steps
Install Amur4j. Go through examples. Create your own flows.
Happy modeling!