Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Atomic Domain Languages (ADL) is a strongly typed system. Atomic Domain Languages focuses on real-world practices for building thing applications on the cloud as well as distributed and concurrent computing environments.

Similar to traditional programming languages like C, C#, etc there is a notion of static types i.e. the basic types that are defined by the TQLEngine out-of-the box. The major advantage of ADL is the flexibility and productivity it offer to create dynamic types using simple syntax of Def XML Named Element. If you are coming from a dynamic type language, ADL will solve your performance and maintainability problems while maintaining productivity.

Types are defined in the context of Thing Definition Language (TDL). Out-of-the box TDL types can be categorized into three groups all inheriting from Entity:

Root of all types
 <Def name="Entity" documentation="The root of all types"/>
  • Atom - This is the root for all primitive types
  • System - Marker of all system types.
  • Container - Root of all composite types

 

 

List of Primitive Types inherited from Atom

 

Different kinds of Atom Types
<Def name="String" inherits="Atom"/>
<Def name="Binary" inherits="Atom"/>
<Def name="Boolean" inherits="Atom"/>
<Def name="Integer" inherits="Atom"/>
<Def name="Number" inherits="Atom"/>
<Def name="Short" inherits="Atom"/>
<Def name="Long" inherits="Atom"/>
<Def name="Byte" inherits="Atom"/>
<Def name="Float" inherits="Atom"/>
<Def name="Double" inherits="Atom"/>
<Def name="Decimal" inherits="Atom"/>
<Def name="DateTime" inherits="Atom" format="$SimpleDateFormat()"/>
<!-- Derived from Basic Primitives -->
<Def name="Clob" inherits="String"/>
<Def name="Blob" inherits="Binary"/>
<Def name="Date" inherits="DateTime"/>
<Def name="Time" inherits="DateTime"/>
<Def name="Duration" inherits="Time"/>
<Def name="YearDay" inherits="Integer"/>
<Def name="MonthDay" inherits="Integer"/>
<Def name="WeekDay" inherits="Integer"/>
<Def name="YearMonth" inherits="Integer"/>
<Def name="Year" inherits="Integer"/>
<Def name="Month" inherits="Integer"/>
<Def name="Day" inherits="Integer"/>

Examples of Using Primitive Types

Primitive types can be used in standard containers (ThingModel, DataModel,, ThingFacet, AppModel, AppFacet) or custom containers (types) defined by users.

General Usage of Primitive Types

Primitive types usage within containers requires primitive type as an XML Named Element. It takes four modifiers -

  • Name - Your name of the primitive type
  • Cardinality - Array of Primitive Types. It takes format "m..n" where m = minimum value; n = maximum value
  • Alt - Alternative name
  • Default - Default value to use at the time of instantiate

General Usage of Primitive Types
 <PrimitiveTypeName Name=".." Cardinality="m..n" Alt="..." Default=""/> 
String
ZoneInfo DataModel using ZoneName as String
 
<DataModel Name="ZoneInfo">
  <String name="ZoneName"/>
</DataModel>  

 

Array of Primitive Types

Array of Primitive types is possible using Cardinality modifier at the time of usage

ZoneInfo DataModel using ZoneName as Array of String
 
<DataModel Name="ZoneInfo">
  <String name="ZoneName" cardinality="0..n"/>
</DataModel>  
DateTime

DataTime uses Java SimpleDateFormat notation. Please refer to here for SimpleDateFormat

ZoneInfo DataModel using ZoneName as String
<DataModel Name="ZoneInfo">
  <DateTime name="RecordDate" format="$SimpleDateFormat(yyyy-MM-dd'T'HH:mm:ss'Z')"/>
</DataModel>

 

 

 

  • No labels