Click or drag to resize

Introduction to the AutomationML Engine

The AMLEngine2.1 allows you to process AutomationML documents with a provided Application Programming Interface, based on the .NET System.Xml.Linq Namespace. Using the API you interact with CAEX-Elements and AutomationML-Objects. This AMLEngine2.1 is an advanced development of the former AMLEngine Version 3.x which only supports AutomationML Edition 1 and the CAEX Version 2.15. This new development also supports AutomationML Version 2.10 also known as AutomationML Edition 2, which is based on CAEX Version 3.0.

The product name 'AMLEngine2.1' indicates support for the current AutomationML version 2.10. The namespace of the engine's programming modules as well as the identifiers of all nuget packages are denoted by the prefix Aml.Engine.

The AMLEngine2.1 is not based on code generation from the Altova tool package as all prior versions and has no dependencies to Altova DLLs. Instead all XML processing is based on the .NET LINQ to XML integrated query framework . To ease adaption of legacy code to this advanced version of the AMLEngine a special adapter package is provided. Not all features from the former AMLEngine based on Altova code generation are adaptable, especially the data types and classes which were defined by Altova are not supported. There also exist many methods which are marked as obsolete, because they are either redundant or replaced by methods, implementing simpler access patterns. The main differences between CAEX Version 2.15 and version 3.0 are summarized here CAEX 3.0 Changes. A short guide explaining the migration of legacy code to the AMLEngine2.1 is available here Adaption of old AMLEgine. This documentation is a full API-reference guide.

Getting Started

To get started, add references to the AMLEngine DLLs to the project (a Visual Studio solution or project). The DLLs can be obtained as a single NuGet package via the NuGet extension in Visual Studio or loaded from the AutomationML web page. The package name for the new AMLEngine is AMLEngine2.1. The Identifier is Aml.Engine. The following DLLs are included in the package:

  • AML.Engine.dll - contains the methods for CAEX document processing and AutoamtionML specific object processing.

  • AML.Engine.Services.dll - contains services for advanced processing of AutomationML documents.

See the AMLEngine Programming Guide for some basic introductions to the API.

Getting the source code

The source code of the AMLEngine2.1 is available for AutomationML members only. The current release can be obtained from the Aml.Engine source code repository To get access to the repository members need to be registered as members in the GitHub AutomationML organization.

Getting the binaries

The AMLEngine2.1 is licensed under MIT License. The binaries are available for download from the AutomationML download page and from NuGet as a direct download or with the usage of a NuGet client.

Fundamental Changes in AMLEngine2.1 vs. AMLEngine based on Altova.

The AMLEngine2.1 has changed its namespace naming in the move from v3.x.x.

  • The namespace CAEXClassModel is now divided into Aml.Engine.CAEX and Aml.Engine.CAEX.Extensions

  • The name spaces AMLEngineExtensions and AML are replaced with Aml.Engine.AmlObjects and Aml.Engine.AmlObjects.Extensions.

  • Some extensions formerly contained in the CAEXClassModel and AMLEngineExtensions name spaces have been moved to the Aml.Engine.Services package. This package implements services. It is optional and may be excluded.

    Special features like split and merge, schema transformation and others are implemented using services. The AMLEngine implements the service locater pattern to recognize a registered service and use its services. One consequence of the service locater pattern is, that there are no different query methods for fast and XPath based queries anymore. A query is performed by the currently located query service.

The AMLEngine has changed its .NET XML processing model from System.Xml to System.Xml.Linq, which is based on the integrated query framework LINQ.

  • CAEXDocument is a wrapper for the XDocument and not XmlDocument as before.

  • CAEXBasicObject and derivations are wrappers for the XElement and not XmlNode as before.

  • The introduction of a namespace into CAEX 3.0 has consequences on query expressions. The CAEX_CLASSModel_TagNames has to be transformed to an XName, which is a combination of the element's name (called LocalName) and the CAEXNamespace. For processing of CAEX 2.15 document's the elements name is still sufficient and the XName is build by an implicit conversion operator.

See Also

Other Resources

Basic code examples