Within the CAPE-OPEN 2016 Annual Meeting, Jasper van BATEN (AmsterCHEM) gave a report (PDF, 1285 Kbytes), (PDF with notes, 8954 Kbytes) on COBIA (CAPE-OPEN Binary Interoperability Architecture) Phase I and demonstrated its results.
While AmsterCHEM was contracted by CO-LaN to create the deliverables of COBIA Phase I, the report is a joint effort from Jasper, Bill BARRETT (U.S. Environmental Protection Agency), Michael HLAVINKA (Bryan Research & Engineering), Mark STIJNMAN (Shell Global Solutions) and Michel PONS (CO-LaN).
After a short introduction re-stating what is the use of middleware within CAPE-OPEN and the two current middleware used with CAPE-OPEN (COM being the most used of the two), Jasper describes the advanced skills required by COM if one wants to succeed in having a proper implementation of CAPE-OPEN interfaces.Jasper also briefly mentioned the other issues with COM such as the non-portability of a COM component to other platforms than Windows.
Then Jasper moved on to describe the objectives assigned to a new middleware specific to CAPE-OPEN including easier implementation, independency with respect to platforms, better performance with strong data typing as one of the means.
Jasper reminded everyone that COBIA is a project delivered in three phases with Phase I being mostly a proof of concept while Phase II will provide complete functionality but without any marshalling yet.
Platform independence with respect to Operating System vendor should permit running COBIA based applications on MacOS or Linux systems as well as on Windows systems. Making it easier for programmers will rely on providing stub source code for all methods necessary to implement CAPE-OPEN components and environments. These pieces of code will be first delivered in C++ and later on in other programming languages. Automatic generation of stub code from the Interface Definition Language file specific to COBIA is included in the COBIA project. Such an automatic code generation is necessary to prepare for extensions and changes in the CAPE-OPEN interface specification. One of the main issues with the current CAPE-OPEN interface specification is its reliance on VARIANT which are specific to COM. Stronger data typing in method arguments will permit getting rid of VARIANT. An important basic requirement of the COBIA project is to keep COBIA working with COM. The numerous CAPE-OPEN Components and Environments now available rely on COM and this investment needs to be preserved so COM-COBIA interoperability needs to be achieved and demonstrated.
COM-COBIA interoperability means that a COM-based CAPE-OPEN Process Modelling Component can be plugged into a COBIA-based Process Modelling Environment. Also that a COBIA-based Process Modelling Component can be plugged into a COM-based Process Modelling Environment. This is achieved through the conversion layer called COMBIA.
Then Jasper went on to detail the various deliveries of COBIA Phase I beginning with registry features (COBIA has a specific registry), COBIA data types which are used to define arguments of CAPE-OPEN methods, C++ language bindings which are for Phase I mostly limited to interfaces of version 1.1 of the Thermodynamic and Physical Properties interface specification, COMBIA, a test PME using COBIA middleware, a test PMC using COBIA middleware (based on the Ideal Property Package source code).
All these deliverables have been verified by the Methods & Tools Special Interest Group.