Platform Overview

The Platform: ControlTier Provisioning Automation Library and Command Dispatching Framework
The ControlTier provisioning automation library and command dispatching framework together serve as the platform - or environment - on which you build and operate application provisioning solutions. This platform provides the essential components you would otherwise have to create - components such as a security model, consistent package lifecycle, distributed application runstate control and coordination, configuration data registry, standardized yet customizable metadata model, and the myriad repository services made available through the automation library.
Provisioning Automation Library: The Process Building Blocks
The ControlTier provisioning automation library is a set of modules that establish a framework and become the fundamental building blocks for any application service provisioning solution you wish to develop, be it for Java-based app containers, messaging middleware, databases, web servers, or in-house developed services. The modules in this library, generally serve as your main point of interaction with the ControlTier build and release commands and workflows. Each module plays a role in the end-to-end process. Some modules coordinate actions across task-specific steps like interfacing with the build process while another controls service restart steps.
The following diagram shows an example of how the automation library provides a coordinated application service provisioning process that spans from build through to deployment. In this diagrams, library modules interact to provide and end-to-end workflow that automates packages being created, the organized storage of those packages in the ControlTier repository, and their consumption by various Deployments and Services hosted on Nodes in the target environment.

Building your own application service provisioning solution is primarily done by configuring workflow commands defined in the library's automation modules. These modules divide up the end-to-end provisioning process into a control hierarchy, with each tier in the hierarchy responsible for a particular phase of the process. For example, coordinating the end-to-end build and deployment process is handled by the Updater module, while the coordination of overall deployment lifecycle is handled by the Site module. The management of the deployment lifecycle for each application component is done by the Deployment module and if the application has runtime state, it is handled by the Service module.
Object-oriented flexibility
The automation modules are not monolithic scripts but are object-oriented components. Each module defines a type and a set of commands (akin to class methods), and attributes (akin to class properties). Each step of the provisioning process is defined as a command in a type. These commands are then combined together in workflow commands to establish higher level processes.
The following chart shows the ControlTier object types and the commands each type provides.

Users can customize the behavior of any part of the process through sub-typing - adding new commands and overriding existing ones from the appropriate base type. This object-oriented approach facilitates process refactoring, a very important requirement for those that must keep up with a changing application.
Platform Development Tools: Workbench and ProjectBuilder
ControlTier provides two tools to develop your own solutions. Workbench provides a graphical development environment to design and develop automation modules. Workbench gives an integrated graphical interface to your provisioning automation code, data model and view and control of the repository. Inside Workbench, you can define types, commands, workflows, edit the metadata, inspect the artifacts in the repository and generate reports.
| Workbench: Type view | Workbench: Dependency view |
|---|---|
![]() |
![]() |
ProjectBuilder is an alternative to Workbench, providing a command-line oriented environment, wherein XML specifications are used to define the automation modules and data model and these specifications are fed through a series of command utilities to build, package and deploy them to the repository. Development is done in a traditional developer's edit, build, test cycle from source files. The artifacts of the ProjectBuilder are loaded into the operational repository via repository services. ProjectBuilder is useful when one needs to really scale up their use of ControlTier and or prefer a command-line/source-file approach to maintaining automation module code and data.
The Platform Process Administrative Tool: Job Center
All the key processes that drive your application service provisioning life cycle are exposed as schedulable jobs in the ControlTier Job Center. Job Center gives the administrative staff a single interface to schedule, run and track the execution of commands and workflows. Job Center is also useful for delegating tasks to non-technical staff.

Job Center acts as the operational dashboard to drive your application service provisioning life cycle processes.
The Repository
The platform includes a structured repository that houses artifacts from the build process as well as the module code and data that drives the application service provisioning process. Workbench provides a graphical interface to browsing the content of the repository. The repository is based on a standard web technology, called WebDAV, and can be made accessible to other tools via HTTP and WebDAV clients.
The diagram below describes the three kinds of repository content:

An essential facility of the platform is a central repository wherein all the packaged build artifacts produced by the build process are registered and maintained. During the deployment phase of the process, application components with package dependencies retrieve their required artifacts from the repository.
A registry of application configuration, package dependencies, host deployment, and key configuration settings is based on the same type/object model defined by the automation modules. This data model is used to drive the commands and workflows at runtime.
The ControlTier platform provides an assortment of automation modules that establish an end-to-end build and release process. Using Workbench and ProjectBuilder, users can develop their own modules by subtyping existing ones. All the modules are versioned, packaged and stored in the repository.
Command Dispatching Framework: AntDepo
All the provisioning automation code is executed within the ControlTier command dispatching framework. This environment is based on AntDepo and a ControlTier plugin that integrates AntDepo to the platform repository, making accessible all the artifacts, modules and metadata defined via Workbench and ProjectBuilder. This command dispatching framework is installed on any host where the provisioning automation tasks are executed.
Based on Ant
AntDepo is based on Ant, originally a Java build tool, it has also been used to build non-Java software projects. Ant provides a cross-platform, declarative approach to specifying the build process. AntDepo extends the use of Ant by adding essential deployment features such as object-oriented command dispatching, network transparent distributed command execution, and a multitude of Ant tasks needed for managing large scale environments.
If you don't know Ant or have existing shellscripts that you want to expose to the provisioning modules, that is fine, too. One can use Workbench or ProjectBuilder and define commands as shellscripts, either by embedding the shell script code directly, or by simply have the command execute an external script.




