For the functionality to support the customer during service selection, we introduced the concept of abstract and concrete services in CREMA. An abstract service is a definition of a manufacturing service, i.e., an abstract definition of a real-world machine on a shop floor or a software service. Such an abstract service includes the description and the semantic annotations required to fully describe the functionality of a manufacturing service, but it does not include an executable software or interface to a real-world machine. In contrast to an abstract service a concrete service extends such an abstract service by including an executable software in addition to the information describing the service. Such an executable software can be a software service that can be executed on cloud-based computational resources, or, an interface that is capable of accessing real-world manufacturing assets, i.e., a manufacturing service like a robot on a shop floor.
During the process design, a customer can choose for each process task between a predefined set of abstract services or concrete services. By selecting a concrete service, a customer defines a specific service, i.e., a real-world asset or software service, for a specific process task, which is then used for the execution of the process task. By selecting an abstract service, the customer defines what kind of service is required for this process task, but leaves the decision of which concrete service should be used during the execution of the task to the system. Before the execution of a manufacturing process starts, CREMA automatically replaces all abstract services of a process with corresponding concrete services, which fulfil the requirements defined by the abstract service. If necessary, the platform may also use several concrete services to replace one abstract service, if there is no single concrete service that can fulfil the defined requirements.