My favorites | Sign in
Project Logo
                
Search
for
Updated Oct 05, 2009 by soundasleep
Labels: Phase-Design, Development
Model0_3  
Summary of model version 0.3.

< 0.2 | 0.3 | 0.4 >

Model 0.3

Introduction

This model release adds some fundamental new model elements such as domain object, domain object instances, and sessions.

Existing atomic operations and composite operations are now documented.

Generated web application runtime code is now formatted through the side project iacleaner 0.2. (issue 13)

Usability Features

Diagram editors now reliably render both contained elements and referenced shortcut elements, even if they are not directly contained within the diagram root element. (issue 47)

  • This means that if a model element is connected to another element elsewhere in the model, a shortcut of the referenced model element will be rendered in the current editor, and the link will still be displayed.
  • This is usually limited to direct connections, however incoming ParameterWires to RunInstanceWires will also be rendered.

You can select a model element and generate all elements that should be contained within it.

  • Simply right click a model element and select "Infer all contained elements".
  • Thanks to a proven property in an upcoming paper, this partial inference is guaranteed to not affect the final generation of the model, although changes to the generated elements may do so.
  • There still needs to be a way to delete contained generated elements.

Three new inference actions use the Drools inference engine to infer new knowledge about a given model element. These can be accessed by right clicking an element in the editor, and selecting IAML Model > (action name). More information is available in the Knowledge Inference section below.

Model elements render the names of their parent elements; this is to help with identifying the source of shortcut elements. (issue 40)

A copy of the given model instance diagram can be exported automatically to PNG by right clicking the .iaml_diagram file, and selecting "Export all diagram parts to PNG images". (issue 9)

Models can be migrated between different versions: See ModelMigration.

Generated Elements

When deleting a generated element, all elements generated by that element will also be removed (issue 29 - GeneratedElementDeleter.java).

If you try and delete a generated element that, in some way, is used elsewhere by the application, you will now get a warning message asking if you'd still like to continue with removing it (GeneratedElementHandler.java).

In particular, if a generated element - or one of its directly contained generated elements, or one of the other elements generated by it, all recursively - is connected via a WireEdge, ExecutionEdge or DataFlowEdge to another element which is not generated, a message box will show with information on:

  • Which non-generated elements are connected to this element
  • Which contained generated elements have non-generated connections
  • Which related generated elements have non-generated connections

Knowledge Inference

New Instance Wires

Inference and Runtime Tests NewInstanceWireMapping.java
Inference Rules runtime/new-instance.drl

If a NewInstanceWire is connected from a DomainObject to a DomainObjectInstance, the attributes from the DomainObject will automatically populate the DomainObjectInstance unless overridden.

Input Form Population

Inference and Runtime Tests InputFormInstanceMapping.java
Inference Rules sync-wires.drl
Menu Title Refresh all Form Mappings
UI Action RefreshFormMappingsWithDrools.java

If an InputForm is connected to a DomainObjectInstance or DomainObject, then attributes within the instance will automatically create editable InputTextFields within the form.

Following the inference below of SyncWires with ApplicationElements, these new text fields will also automatically sync up.

Domain Stores from Properties files

Inference and Runtime Tests PropertiesFileMapping.java
Inference Rules runtime/file-domain-object.drl
Menu Title Refresh all DomainStore Mappings
UI Action RefreshDomainStoreMappingsWithDrools.java

If a DomainStore is of type PropertiesFile, the DomainStore will be automatically populated from the values in the PropertiesFile (in particular, this will create a DomainObject named "properties", and all properties in the file will be added as attributes).

Sync Wires with Application Elements

Inference and Runtime Tests InputFormInstanceMapping.java
Inference Rules sync-wires.drl
UI Action RefreshFormMappingsWithDrools.java

If two ApplicationElements are connected via a SyncWire labelled "sync", and these elements both contain other elements that match to each other (currently through a case-insensitive naming match), these elements will also gain a SyncWire between each other.

Domain Object Instance Mappings

Inference and Runtime Tests NewInstanceWireMapping.java
Inference Rules runtime/new-instance.drl
Menu Title Refresh all DomainObjectInstance Mappings
UI Action RefreshObjectInstanceMappingsWithDrools.java

If a DomainObject is connected to a DomainObjectInstance via a NewInstanceWire, this action will populate the object instance with DomainAttributeInstance_s matching the attributes within the DomainObject.

New Elements

Sessions

Description ApplicationElementProperties stored within a Session (i.e. text field values, login keys) are only available to a single session user. When the session is closed, the values are lost.
Models Session*.iaml
Inference Tests -
Runtime Tests Session*.java

Operation/Condition Modelling (2)

Temporary Variables

Description Within operation or condition modelling, these represent temporary variables. When the operation is finished, the values will have been lost.

Execution Flow

Description Within operation or condition modelling, the execution flow models the order in which operations are executed. If an operation has multiple outwards ExecutionEdges, they are run in series (ideally they would be parallel).

Data Flow

Description Within operation or condition modelling, the data flow models the flow of dat between elements; for example, from a parameter to a temporary variable, or as a parameter to an operation.

Start Node

Description An operation or condition starts at the start node.

Finish Node

Description An operation completes at the finish node. In conditions, this means the condition has passed.

Cancel Node

Description If the operation has not completed successfully, then the cancel node acts as a failure or exception-throwing element. The value provided is the exception message thrown. In conditions, this means the condition has failed.

Model DataFlowTemporaryVariable.iaml
Inference Tests No inference
Runtime Tests DataFlowTemporaryVariable.java

For a discussion of possible operation components and pre-defined composite operations, see IamlOperations or IamlCompositeOperations.

Buttons

Description These represent clickable "buttons" in the user interface.
Models ButtonNavigate.iaml, ButtonSetValue.iaml
Inference Tests No inference
Runtime Tests ButtonNavigate.java, ButtonSetValue.java

If a Button contains an EventTrigger labelled click or onClick, this EventTrigger will be called when the button is clicked or selected.

Domain Object Instance

Description DomainObjectInstances are instances of a DomainObject. They are created by a NewInstanceWire.
Model NewInstanceObject.iaml, NewInstanceObjectAutosave.iaml
Inference Tests -
Runtime Tests NewInstanceObject.java, NewInstanceObjectAutosave.java

If "autosave" is set to false on the DomainObjectInstance, then changes to the attributes within the instance will not be automatically saved. The "save" operation will have to be called manually.

Domain Attribute Instance

Description Like a DomainObjectInstance, except concerned with an attribute. A DomainObjectInstance contains many DomainAttributeInstances.
Model NewInstanceAttributeSession.iaml, NewInstanceAttributeSessionAutosave.iaml
Inference Tests -
Runtime Tests NewInstanceAttributeSession.java, NewInstanceAttributeSessionAutosave.java

DomainObjectInstances and DomainAttributeInstances can be stored within Sessions; otherwise, all visitors to the site will access the same instance.

Login Handler (Secret Key)

See LoginHandler

New Wires

Select Wire

Description Selects existing instances of DomainObjects into DomainObjectInstances

See IamlSelectWire for more information.

New Instance Wire

Description These wires create new instances of DomainObjects and DomainAttributes
Models NewInstanceObject.iaml, NewInstanceAttributeSession.iaml etc
Inference Tests Covered above
Runtime Tests NewInstanceObject.java, NewInstanceAttributeSession.java etc

If the targeted DomainObjectInstance or DomainAttributeInstance is stored within a Session, then the new instance will only reside in that session, and will only be saved to the database if "autosave" is enabled or the "save" operation is called.


Sign in to add a comment
Hosted by Google Code