An application as defined in Cuesta corresponds to an actual application that the user wishes to include in a session. An application must be defined in Cuesta in order to be automated or take part in context synchronisation.
Applications are defined by a name, a type and information about how to recognise and possibly launch the application. The type determines which driver implementation Manatee will use to interact with the application.
The startup and contains parameters are used respectively to launch the application (if needed) and to recognise the application if it is already running.
Types of applications
Manatee can drive both native, web and java-based applications as well as handle proxies for actual context particpants. Each type of application is handled by a specific driver and some requires extra components to be installed, e.g. a Chrome extension for the Chrome browser.
We have the following drivers available for standalone applications;
- The native driver which are able to drive Windows native applications. These are normally applications written specifically for Windows and are accessed using a native accessibility API.
- The Java driver uses Java accessibility APIs to interact with Java applications. It has support for Swing/AWT applications and JavaFx embedded in Swing/AWT.
For web-based applications we have support for the following browsers:
- The Chrome driver uses an extension to drive web-pages/applications shown in the Chrome browser. It is available at the Chrome store.
- The Firefox driver does the same as the Chrome driver but for Firefox. It can be downloaded from here.
- The Edge driver which again is a driver for the Edge browser - available from the Edge Add-ons store.
- The IE driver interfaces with Internet Explorer to be able to automate web-pages shown here. It does not require any extensions/add-ons.
Manatee (the driver platform) also has some built-in browsers:
- The embedded IE browser runs an Internet Explorer browser-engine in a built-in window. It requires Internet Explorer to be installed on the host-machine and will use the version (depending on registry settings) and settings of IE installed but will display new window chrome with greater support for hiding the location bar etc.
Furthermore we also have;
- The headless driver which does not attach itself to any running applications and is mostly used for running flows outside of the context of any applications.
- The ContextParticipant driver which is used to integrate with CCOW-compatible (via our external APIs) applications.
It is possible to add more drivers by way of Manatee plugins, so if there is a special need we can deploy support for new application types dynamically.
Creating and editing applications
An application is created by entering the required information in the new application input form. Each type of application has a specific set of fields that need to be filled out.
Launching or attaching to an existing application
For a web-application the section containing the parameters for launching is simply the url and (in some cases) whether to open a new tab or a new window. Similarly the information needed to detect an already existing instance is the url (or title in some cases).
For a native- or java-based application more information is needed to launch the application as shown below. Detecting an existing instance can be done by different predicates:
- Title bar will match the current title of the application against the regular expression given, the same string as returned by
- Frame will match the class of the window frame, the same string as returned by
- Process-name will match the name of process and may include arguments given to the process, the same string as returned by
- Executable-path will match the full path to the executable, the same string as returned by
The predicates are joined in a conjunction meaning that the more predicates / fields that have input the more specific the match is. All fields accept regular expressions.
Launching an application via a flow
You can also choose to start an application with a flow. This flow is run in headless mode meaning that no application is available so you cannot interact with fields etc.
In the flow you can write some code that produces an application by:
- Returning a
stringwhich will be interpreted as an url to launch (for web-applications) or a command to be executed for other types of applications
- Launch the application in the flow and return an object containing the properties:
hwnda window handle for the main window for the process
pida process identifier for the process you have launched
- Or return an object which will be used to launch the application. It should have the following properties:
commanda command to run and
argumentsarguments to a command
- Return a
ProcessProxyobject designating the process launched.
- Return an error indicating the launch failed.
- No return value is interpreted as a successful launch and Manatee will try and attach.
You can add the application to as many groups as you would like. The more groups you add the greater number of Manatees will be able to use the application. The groups found on an application should be a super-set of the groups of all of its flows - in other words; do not add a group to a flow without its parent application also having this group.