This post will be a living list of common questions and their answers that developers or users of Murano ask of the Support and Application's Engineer teams.
We found that having a concrete understanding of the roles of Products, Applications, Services, and Events are critical to orchestrating a successful connected project.
Product and Application Solutions:
What is a Product Solution?
A Product Solution defines the data model that a connected device, and others of its kind, will follow to report information. It is the context in which the Digital Twin of your device will exist. We put more details about Product Solutions on our Product Overview page.
What is an Application Solution?
An Application Solution provides the interface between people and the devices or assets that you have connected to Murano. Most often this takes the form of a web application. You can host some of you files with us directly, or connect applications hosted elsewhere to your interface. Feel free to direct your own application, or a mobile application, to get information about your users or connected devices. Our Docs site's Application Overview page has more information when you want to learn more.
What is the relationship between Products and Applications?
The relationship between Products and Applications is a many to many relationship and through the connecting of Products to Applications you can expose all of your fleet's data to the interfaces you make availble to your end users.
What would be the use case for having multiple Products in an Application?
Most of the time for companies who have many connected products to have multiple different Products Solutions, each with their own definition. This way the device data from many different kinds of device can be available to your end user in a single interface.
What is the use case for having multiple Applications connected a single Product?
This is a use case that we are trying to explore with some new features. We want to develop the concept of a Product Solution as a service. This means data from the same fleet of devices can be available to different Applications each with different purposes. We want to create a marketplace where machine data itself is a commodity.
What is a Service?
Services are specific feature sets that are composed of two distinct components: operations and events.
- Operations are functions that can directly be called from within an Application script.
- Events trigger the execution of an Application script.
They are the work horse of your business, user, and alerting logic in your full connected Solution. Orchestrating Services to complete tasks for your devices and users is what getting the most out of Murano is all about.
You can find documentation on all of our published services on our docs site: Services.
Can I define new Services?
This is what we want Exchange to enable our customers to do. In both its public and Enterprise manifestations: Applications, Services, and Products will be able to be published and eventually monetized.
Currently Exchange requires to work with us directly to fully integrate a Service. Feel free to reach out to us.
Is there a Service for making HTTP requests to outside servers?
There is a Private Exchange service that does enable an Application to make extrenal HTTP requests. We haven't made it widely available because we are worried about its vulnerability to being abused.
We can imagine a plethora of legitiment use cases, feel free to get a hold of Exosite Support if you could use this service.
Can you interact directly with Murano Services?
Yes you can, and by far the easiest way to do this is through the Murano CLI tool.
Try giving commands like
$ murano product list and
$ murano keystore list a shot.
What generates Events?
Only Services generate Events in Murano. Written custom code can only handle Events from within the right context, or interact with other Services. Custom code could call another Service to do something that would generate an Event, but it is appropriate to think that only Services create Events. Here is the list of Services that currently generate Events in Murano:
What variables are bound by each Event?
In the Exosite Service Reference, each Service that generates an Event has the definition of its Event object at the bottom of the page.
Are explicit '--#EVENT' tags required in Event handler code?
These expectations are not enforced by Murano, but they are enforced by our Murano CLI deployment tool. Since developing using the CLI is the most efficient experience, it is a good practice to include these tags at the tops of your Murano Service Event Handler files.
Can I define new Events?
Yes, but Events are always tied to a Service. You won't be able to make a new one without making the other.
How is my custom Event Handler code sandboxed?
The Application in which the event is being generated for descrbes the scope of what your Event Handler code can interact with. In full, your custom code is sandboxed to the Products connected to the Application whose connected Service is generating the event.
Still looking for help?
You can get help from our Support and Applications engineering teams by looking for another topic here, opening a new topic, or getting a hold of us directly though firstname.lastname@example.org.