This product update will dive a little deeper into the new ‘REST Service for running solve jobs and other asynchronous jobs’ about which we informed you in an earlier product update.
Why did we build it?
For three reasons:
As part of our integration vision: enabling our software to fully participate in an increasingly connected IT landscape, using common standards such as REST, OpenAPI and OAuth.
Specifically to replace the current PRO API that requires more programming and only support Java and .net.
As part of our modernization of the AIMMS PRO code, turning it into a collection of micro-services connected through APIs.
How do we envisage this will be used?
Knowing the creativity of AIMMS app developers, we know we will be surprised with the number of ways in which this new functionality will be used. Some applications that we have already identified are:
- Automating the execution of a large number of optimization runs to conduct a scenario analysis.
- Incorporating an AIMMS optimization into an analytics workflow consisting of all sorts of other technologies.
- Embedding an AIMMS optimization into an interactive software product or application to perform ‘behind the scenes’ AIMMS optimizations.
What are key features I need to know about?
- Supports creation, inspection and deletion of Tasks. An overview of Tasks currently running can be retrieved using a REST call.
- Includes OpenAPI spec to enable automated development of the REST client.
- Tasks are queued and, depending on the configuration and contract form, multiple Tasks can be handled concurrently.
- For now uses API keys for authentication, created in the PRO Portal. In future this will be changed to a more sophisticated authentication/authorization method.
What is a ‘Task’?
‘Task’ is a new term that we introduced so that we can differentiate between Sessions and Tasks.
Within the AIMMS context you might be familiar with the concept of a solve session. This refers to an AIMMS run-time session with a specific AIMMS model loaded. When a user of AIMMS PRO (on our cloud platform or on-premise) requests an optimization (typically by ‘hitting’ some kind of ‘optimize’ command or button), a separate solve session is launched, the optimization job is executed and when done this solve session is terminated. Same mechanism applies when a solve job is submitted using the ‘old’ PRO API: the solve session is started, solve job is performed, solve session is terminated.
We introduced the new concept of a Task so that we could run a sequence of tasks on the same session, thus avoiding the session launch times. This is particularly helpful when running a large number of optimization jobs that each require little time on the same model. After completing a Task the Session is used for the next Task in the queue for the same model. The Session is terminated when there are no more Tasks for that model in the queue.
What else do I need to know as app developer?
- Only available on our cloud platform, no plans to offer this for the on-premise version of AIMMS PRO.
- Requires a commercial arrangement; and in most cases we can arrange trials.
- Reference documentation can be found here.
- And of course you can always ask questions here in the community or email our User Support team.