 We are Cardo Zanini and he's Christiano Nikolai. We are engineers at Red Hat and we work in Kojito project Kojito is our next step for the BPMM drill thing that you guys already saw in the past presentations So we are talking about business automation. So what is a business automation briefly? It is The magic that we do to automate some process and what is a process a process can be anything You know like if you have issues to buy a mouse for example You cannot you can ask for a manager for a job prove for you to buy a mouse And you can ask for another three different vendors to buy this mouse for you Or to you know to get some clothes of the price for this mouse And the cheaper or the the one that we will deliver faster for you you buy so you need a mouse And you water a mouse. So this is a process of ordering a mouse. Okay, so let's imagine that Everyone that needs to represent a business application business process realize Different way of doing that like using clip parts. So instead of using clip parts someone very very intelligent Much more smarter than us come up with an idea of why not standardize this, you know Let's call this BPMM. So this is the same process that we have here as a clip part we have Please go. Okay. Hey stop We have here with this thunder that we call BPMM So we have here for example order rules. What is the rules to buy a mouse, you know Someone to review my order my manager for example, you're going to buy a mouse really you need a mouse for example Oh, yeah, I need a mouse. So please approve my mouse for example, let's quote different suppliers for a mouse and the best one we decided here using the decision rules and then we end the process so We bought a mouse and we represent this process that anyone in this room or anyone in the world that has you know Some kind of intelligence can understand what a business process is by looking at this Standard, you know, so instead of having a proprietary or your own way of Representing a business process. We have a standard and what we did we took this BPMM This is thunder and we transform it into a microservices application So a match those applications work pretty well into microservice architecture. So you can compose other service So let's imagine that we have here a lot of service that we are calling, you know In our architectures to call as far supire a B or C. So they have different API They have different microservice. They have different gateways, you know to communicate into our microservice architecture So we are calling them using our process and we can do that with Koji too. So What are you doing here? It is a kind of a service from position. Okay so this is more or less what is a business process and I hope you guys understood that and Standard that we call BPMM and we take this BPMM and we transform it in a microservice and we put that microservice in our microservice architecture in the cloud. So So just one slide back. So just back to the process. So that When we look at this the nice thing we can actually see here Is that this become a common language for developers and the business analysts, right? So you can show this to them and tell look, this is what my microservice is doing from the business perspective Is that okay? Is that doing the right function and then he might look into that? Yeah, no if The order needs I know it's X amount of dollar it needs to go for two levels of review so that sort of Change change on how you speak and how you talk to you with the business it creates a common language for us developers and to the business to Get for a solution For for the business again all we do with with the business application is creating a solution based on on a business requirement It's this it's the perfect translation for that at this from our is we see so we've cause you to so Where did it came from? I believe most of you guys already heard about drills and Jbpm So those are two well-established Java frameworks that been around for 10 plus years so When we started Druze and Jbpm The world was very different how you deploy your application or how you create your applications if you're running on wildfly eap web sphere whatever The runtime was completely different right because there is only an API It is the only a library of running a VPN process is a library for you know It's this fine rules and run this rules just a library We just want to step up, you know to bring other things under value for that So and then so we realize that things change so we are talking about open shifter by talking about kubernetes You know the world has changed completely in terms of runtime, but there's two things that these two guys know Really well how to do For drills, it's how to how to write rules or how to expose specific rules from your project Jbpm itself is exactly what we just saw is the modeling part. It's how you connect the different service So we have this background knowledge Pretty well established over, you know 10 plus years, and we don't want to throw that away So because it is actually reusing All of this knowledge that we've got with drills and jbpm, but focusing on the cloud So we get all of that and then we put into selfie that specifically for for the cloud trying to minimize any sort of resource That you need if that's CPU or memory or storage or anything like that because now we Understand that any of that is paid by the use which is completely different from from the past where you have Had the big monolithic application that we we saw in the previous presentation So Koshito is that view For this new environment, but we're using the existing knowledge that we had with drills and jbpm We've we've Koshito we we also understand that There is two Let's say mainstream Environments for creating job application these days one is spring boots Know a lot of people are familiar with with that and the other one that's have having a bit of a Hype at the moment, which is quarkus, right? So we don't really enforce the developers to use Either one of them will give the choice for you to decide which one is best for you to adopt in your company If you're using spring boots, you can use Koshito with that if you're using quarkus We have a pretty good extension for quarkus With Koshito, of course if you're using Quarkus, you do have something cool in that which is the hot reload which works pretty well Right so So we are talking about you know the microservices and the bpmn so what's the Really like the end goal that we want to do with Koshito So we want to go from that bpm process into a microservice So from that bpm process with Koshito, we can actually generate a full Rest rest full application Automatically, that's how we written that so you you go from from from the bpmn You model your process, but at the end of the day you're creating Microsoft that exposes these apis for you to interact with the process from this point All of this is out and generated is based on the Domain model that use or the poetry classes that you put in the process. So there's nothing on these so for instance This is the rainforest process. We have a post here That's where you're going to start your process pushing your domain data There's nothing specifically about Koshito API in there is just pushing the domain, of course if you need More than that if you still want to know about the specific or the internals of Koshito You can for instance have Extra add-on which is called management add-on that expose more Endpoints for you to deal with these specifics of the Information about the process. Yeah, so if it's running it has tasks and etc. Yeah, so we've we've Koshito So by the fall you get this endpoint out of generated and the the way it works is that we expose a few add-ons That's depending on your need if you guys Saw the present the previous presentation from the QE guys They showed all the different options you could have Including persistence including Kafka Data index and all that so those are add-ons that are published with Koshito So you can choose and pick which ones are needed for your Solution that you need to build and then you start adding like management. You start adding events with Kafka. You start adding Persistence with infinite sperm it really depends on on on the solution that we're trying to to create As I said like we don't really enforce you to use Quarkus or you still can use spring wood But for instance with Quarkus we can generate a native application with Koshito and that's pretty huge So if you look at start-up time of this application, there's a full application based on Koshito and Quarkus is startups in less than a second 0.03 Micro happens, so that's that's pretty good. All right, so that's With Quarkus you do have a way to generate Not if native applications and push that into a darker image and push the open shift and that's what you get right, so We have the Koshito travel agency. We're just gonna we are not gonna go Too much deep into that we just want to show From that's pretty much stopping from where the guy stopped on the previous presentation We'll take from that and see the application running on open shift Yeah, the difference the main difference of application the guys Show you guys is that they only have one one one plot one service is running Now in that one service has everything the the visa process the travel process, you know, and then they are just Persisting persons with in Phoenix, but what we're doing here is slightly bit different Take part the visa process and we have the travel process So they are separate process you can scale up on the visa process We can scale up on the travel process because there are different micro services They act independently, you know, and then they are both using the same in Phoenix plan that Persisting store and they are using Kafka for Communicating with each other. So for example, if you need visa you can send a message to the visa microservice saying all This person is visa. So process that, you know, and we are not calling that directly. That's the main difference We are we have this even basing architecture built on top of open shape with Kafka in Phoenix Pan, you know as a backup as a infrastructure backup and not everything else there Being administered by our cogito operator that is an operator is briefly Kubernetes application so Kubernetes is that you know the mainstream Containers orchestration in market everyone is using Kubernetes nowadays and Smarter people thinking about something like well if we Extend these Kubernetes, you know the the orchestration containers for others to write applications there So that's we are what we are doing. We are creating You know an application that manage other applications that you know provide infrastructure for example For Kafka. Well, if you if you come up with well, my process needs Inventing it's a message. What can I do? You just I Need something, you know to send message There is something that exists in the market that cost Kafka that we can actually deploy The server into the open shift and use that you know in who is going to Deploy that for me the operator will do that for you So if you don't need to worry anything like that, you just you know Deploy your service the operator will be smart enough to realize that you need Kafka that you need persistence and then we'll deploy The persistent service and if you deploy the message service for you So again, so this is the same process we we saw before So, you know starting the process of meeting a travel request and then we have two other sort of process there We've seen this one before Just regarding the architecture What we are going to show here is that we have these two microservices. So there's two independent processes, right and what's happening there is that they are using if in span as key value store to persist there the state of the process And they are also sending events to Kafka Where this data index serves is consuming the data? So with the data index itself The data index is it's a service that we provide out of the box and the idea with this service is that it Listens for all of the microservices that they're running and have them capability of sending events through Quasitive runtime. So if you imagine this is Two microservices, they could be spent through I don't know hundreds of instances of different pods into Openship, so you need that single place that is capable of combining all of the information of the process instances They're running so from at certain point in time You want to see and you want to know the state of the processes that are running on your environment and that's where You're gonna get the information Through the data. So the data is also using infinite span as storage Just just a comment on the messaging We are using Kafka, but because you to itself supports not only Kafka every single messaging provided that's compatible with It's more really which is the micro profile API you can hook into Kojito The other thing we are just showing here another capability is that for every Kojito runtime as part of the add-ons that we have we have one that's Called metrics and that expose an arrest endpoint to Prometheus so you can plug Prometheus to scrape the data from from these runtime And then create some some nice graph on top of that Right. So that's something you get. Let's say out of the box if you use the metrics add-on from from Kojito All right, so now we are going to jump into the actual demo on OpenShift Let me just see here What we have so that's the the application running on OpenShift We can see that's the Kojito views as defconf which is the project that was created So I just kind of come in here and create a new travel request Any street, so I'm Brazilian Brazil. I want to go to Australia Brisbane All right So that's the the latest one that was created So as part of the rules that we That we added to this Microsoft's it's saying that it needs a visa, right? In that what's going to happen is that we have a separate application another microservice that's having just the application for visas which is whoops this one here All right, so When the process reaches the point that it needs a visa it actually sends an event to Kafka Right, so it publishes a message and the other microservices is listening for that message Yeah, so if I go there and apply for the visa application And you're going to use the passport number and duration of the days that you are going to the trip So now the the visa application will see you know the here the yeah The visa requirements and then someone else can approve that Prove how for example how I have the best part of the guy I have the you know the identification of him and you know all the paperwork that they need to approve the visa and I can reject nor prove the visa so here I'm going to approve that and then proceed on our Environment and now we have a book a hotel and book a flight for him. So because the visa was approved All right, so we have this two services communicating with each other without rests and other than anything like that in the middle We have a cloud event is keen. We have Invent driven architecture. So and how we are capable to do that. We are doing that with Kafka So we send a message through Kafka listen I need a visa and then someone else in there Actually, we'll listen to that we observe that streaming and we'll receive the message Requiring the visa will proceed with that. I can't actually spawn multiple No services there that can for example have some Services that for someone that can actually help me with the visa for example So I have another service there, you know that someone will receive a message. Hey look There's a visa request in the service architecture in the context here in this scenario So do something with that like you can send in me to the guy. Hey need a visa Prepare yourself to face the paper with a guy, you know, that's The the sky's limited so you can do whatever you want with this Cloud event in architecture. You want time to gather your service. They are acting by themselves That's that's the beauty of the micro service. That's not it. Just, you know taking a monolithic Architecture and break it down in small parts and say, oh, I have micro services if you tie them together like though I depend on that interface. I depend on that resting point and Oh shit, oh no those kind of things Will be tough for me to you know to actually scale or you know, for example, delete a service and put someone There for example imagine that we have the visa and travel application when once I need a visa The travel application will post a request an actual request to the end point of the visa What are gonna happen if I lost my visa application? I've got you know to see a lot of efforts in my interface and the users will have a very bad experience there but in this in this case we have a synchronous process, so I just Put something in the stream, put something in the QE and someone else will listen to that QE and will listen to that message and will process a problem So that's the the beauty of the you know the event in architecture I can just you know delete the pod of my visa and proceed with the visa check and the visa will be there waiting for someone to catch the message and proceed That's the thing that we are going to achieve here So a synchronous message in cloud events architecture Okay, so going a little bit further with the data index service that I wish has anyone here worked with GraphQL already Yeah, yeah, it's pretty soon GraphQL. So yeah, so we had like a really good experience for doing this This service and what this service is capable of Remember that I think we we mentioned on on the On the previous presentations well that we want to with Kojito. It's not only about the runtime We also want to make two other things very important One is the developer experience when we want to make it as easy as possible to create those microservices And we also want to help the developer to focus on the business domain that you know that they are trying to So so with that for instance with this data index API Service that we created we have Schema with GraphQL that's able to not only expose the technical information Which is process instance and user task instances. So that's the internals of Kojito, right? So those are the process and the test But we are also exposing the data about the microservices themselves so we have the travels which is the domain of the First application that we saw where I submit the travel and we have the visa applications, which is the domain of the Visa handling specific application. So what can we do with that? So let me just close it here. So this is The API that we created so for instance if I'm looking at the process instance I can go in there and get the details of just the active process instance So I have a pretty good filtering capability in here and I can get the details of the current Processes that are running that The nice thing about GraphQL is that only returns what you need and also give you the schema where You know, it has the attributes the specific attributes that you want to Search for so if I want to include the process name I Can do that. So the UI that you guys saw in here and Here these two UIs these two tables they're built using GraphQL. So that's the exact same thing That I run in here. So but in this case here. I'm looking at the Technical details of the process, but let's say that we are interested on looking at the Visas, right? So here's all my domains All right, so I have the visa applications Expand that Yeah This application which is my object and then I can Check if it is approved CD Let's say the nationality Right There it is So if you guys can see like there is nothing specifically about Kojito here So we're just searching on the domain of this application itself, right? So if you if you have to build let's say a mobile application using GraphQL That's how you can hook up into the data part of Kojito, right? So let's say that now I'm doing a mobile application that needs to Show on the UI for someone to actually approve the applications that are not approved, right? So how I can do that? Here So I have this where order by and pagination at Capabilites so the where Part and then I can get into The domain again, so those are the attributes of the visa application. So I'm gonna get into the visa application in them itself Open up again I'm gonna say approved equal Joe or false Right, so that's Right, so there's only one Bend in that so again, so I'm looking at the domain I'm asking for approved equals false and I get the current application that's pending to be Approved so that's that's pretty powerful as you guys can see If you need to build a UI on top of the services Of Kojito, that's the sort of capability. We can provide in there of course So if you From the domain perspective, right? So you found The application that's missing to be approved, but let's say now you you actually want To know which process is related to this one so you can actually look into the metadata of the visa application Process instances And give me the idea and the process name from which Sorry process ID From each data application is related. So I have the idea of the process That miracle there and the process ID which is visa application Yeah, and you can track back to the process that I actually you know stop then do something about it You know there is tracking, you know, and that is yours so you can Scratch food through you know and looking into it and you for them can create reports for example You can create the spatch mail messages. You can actually have a mobile application You can have do whatever you want because we are Doing that with JSON files with requests and get and etc. So all with the standard tools This is nothing Tied with Kojito tied if it began tied with anything It is just your data and you're just scrapping the data using standard Technologists, that's the beauty. So it's so I get quite excited about this because I was writing this stuff so Not only the querying capabilities, but if we're looking to the APIs for GraphQL, it does support something other that's really nice, which is the subscriptions So we actually have a model for subscriptions here again I can subscribe to events related to process instances or user tasks Which come by default with the data index, but depending on their model then we create the domain specific subscriptions so what a Subscription is is just a web socket a pushback notification right from the server So if my applications it's a subscribe to a travel's added Event any time someone every time the data index received an event from any runtime on your Architecture that added a new travels you're gonna get a push notification back How that works if you guys actually see or saw when I push a new Travel here. I actually got a refresh on the page that was done via a Source let me just show that that was done via the subscription for The data makes so in here. This is just a plain web socket. So what happens here? So I'm Subscribing to the travels update Event and I asking for the ID the traveler the last name first name email the trip So this whole you why here It's built and react based on on GraphQL Yeah, and the beauty thing it is all everything that you guys saw until now is domain data It is domain data for our application. We're not you know Oh, we have to use this kujito red star this kujito API nothing like that You know, you don't even know that you are running a VPN and process behind that So that's the the nice thing that you hide implementation And you show on the interface. That's the you know ones of The nice things about the software engineer that is you know hide implementation from the client So you can actually have a nice interface a plain interface with your dad with your domain and you can act Actually work with that. So that's the the thing that we want to achieve We want to expose your domain data and behind some business automation and intelligence processes No, that's the that's the thing. We don't want to you know to Being the same like oh, let's do BPM and let's do drills and that's not to know We are trying to what we are trying to achieve is exposing your domain data in a smart way So you use your structure. You just know create your structure Make things with your structure and link them like I'm linking traveler with a trip So this is the beauty you show like your business your PO You're probably honored for something and you just realize how you're going to link with each other. So so I'm going to create this travel application and then I need trip and in the traveler and a visa and it all those kind of things and how they're going to know to talk with each other so I Design a process. You know, I go that and I design a process and Realize what it what I want and then you use could you to power for that now to actually run that process for you So you create your domain you link things how they are going to do you describe your rules You describe those business process and then you have to do the the hard work for you that is Taking everything there and put in the cloud. So let's see how the Code is on the cloud Yeah, I like hearts person so This is the cosito operator that is the the engine behind Taking cosito from source Imprint the whole picture. So basically what we have is if you are designing your process you start with a gift In this case, huh, but we can use whatever gift solution that you have so you have a gift project I need to get pro story and you start creating your job by structure files like that the plain old Java file Objects there and then you Design a process rules and etc. Everything inside a gift environment a gift a post story and then you tell to quiz operator. Hey, here's my Story take this source files and put in the open sheet and by the way, I'm going to use resistance and I'm going to use event We are working hard to have the operator to realize that your process need event So we can actually do that for you What we won't even know it, you know, you won't even have to tell him that Oh, here's my source and you know do something with it put on open shift and You know the play finish and the play cafe the priority for me and then I just want to see my my you know my service working I don't want to be aware of like thinking about well, I Need to think about the finish man. How can I deploy this much? You know to get to get to have persistence Oh, I have to play cafe, but I don't know much more about topic and data and streaming all this kind of stuff I just want to send a message and Leave that to the operator. So that's what what you're doing and to Well, come on. Okay. So to Do that we need images. So if you know a little bit about containers You you realize that you need images to do that. So we have our own images for Quarkus and for spring but so Whatever runtime you have Quarkus always bring what you tell to the operator. Hey my my pros I want Quarkus not spring. Okay, so generate the code using Quarkus And then we use this image to build from source and to you know To come up with that a final jar file final micro services file like the same file that the guys from the Previous presentation show it to you guys like oh, here's my Quarkus Application with this you bird jar file and we take this jar file and transform that into a very lightweight image Look here I have one giga image because I have maybe not have JDK I have a lot of things here and in those image for runtime. That is just the application just the Jar file for application nothing in anything more your image is pretty you know Lightwave and we have security because we are relying on hell wait. Okay, so we have that had had limits eight Being our base image. So whatever you need for example a security issue on the on the operational system the guys from red hat will be the image and your in the operator will be your runtimes automatically so also we have And you and you see via fixed your runtimes. We have this if you fix it there as well. That's the beauty. Well Yeah So this is the architecture that I'm gonna show you guys, you know the brand new architecture with the oh Here's the kuzhi to et cetera So how do you take that thing that the guys there are we're working you know locally because it is easy Their machine in my machine works, but how about open shit? How how can I you know actually deploy that on kubernetes on open shit? container orchestration solution, so We think a lot about that and they could you to operator is the The infrastructure behind all all of this so we have for instance Dependence on another operator. That's the strings that is operator for Kafka. I Don't want to know to deploy Kafka by myself. I can you know delegate that to the strings That is another Kubernetes operator. It's pretty popular and we are using that so when you saw it when you talk to To Kodito. Hey, I will need Eventing, okay, so I'm going to install Kafka and I'm going to just to say to Kathy install the topic install the closer of kaka for me because My service are going to use that and the same for in finish them So if I need persistence, they think it's going to break the real real Deploy the in-spawn server and we're going to use that for persistent as well and We have our own custom resources if you know a little bit about you see that we have some resources there That is deployment service That is you're for a thing an open ship to have how's we have deployment config build config all of these are resources they call resources inside Kubernetes environment and As we are creating a custom Kubernetes application We have a custom resource that we call kodito service. That is your runtime service is running In your picture, so you can like for example, oh see get kodito apps And then you're going to list all the kodito act that's why no location because of our operator is offering this custom resource okay, so Sides kodito services we have the kodito data index as well So you can deploy a snow on data index there and then you tell to the kodito operator hey Deploy the data X for me and operators the bit operators smart enough to know that That index are going to need cap can infinite plan and I'm ready to deploy that for you So with one I have called like the guys showed to get to back in the previous presentation when they they type like Could you to deploy service in style in this plan? You're you're giving you're giving a hint to the to the CLI to the operator that the Infinis but in this case when you deploy that index with that same tool because to see a light you'll do like could You to install that index when I do that you're going to create Custom resource that we call kodito data index and then the all the industry career going to be provided for you The same you are doing right now for a key cloak as well So we are going to have SSL capabilities within open shift using our operator So this is another demo. I guess we won't have much time to go through all the The thing yeah on the on the operator, but I'm going to show something here That is pretty cool. This is the product that that cough and here we have all the pods deployed on our architecture So what we have? Is the operators that I saw that I showed you guys so We have code operator and also install the code operator We have installed infinite spam operator and strings operator as well And if you want to see your custom resources, you can click here and you're going to see an user interface To that index the drive away genes and be this travel agency and be this there with two applications that I created You know, I just read that then and so okay could operator please deploy those applications and could you tell me for is a New custom resource that we come up with that is the orchestrator of the all the infrastructure within the open shift So also we create a code to infra with without them. Okay, it's all for me Kafka infinite spam key cloak or whatever Any infrastructure out there that we have so for example if I go here we can see some Values regarding no important Properties regarding the Could you don't service here and then we have the source we have the Runtime type we have the route that we can access this service What kind of installation mode I want for them like I need to finish them. I need to cast so I set the here What else what else? We have how many deployments we have right now for this service and of course So if we are talking about kubernetes, we're talking about Resource we're talking about YAML files. Yay. Yay YAML files So here's all the specification of the YAML files for this service So you can specify event to your you know environment variables. You can specify the source and so on Like the runtime for example is if I change the runtime here to spring both The great operator will be is mine enough to change that and rebuild my service using we spring both run times I don't need to do anything because the the rest and points will be the same, you know just the the the heart of the crystal service or going to change and Also, we also have the the other service. I click here. Okay. That is kosito visas and here that is a very tiny Boolean value. Let me see if I put in here. Oh Oh What is Yeah Never mind. I thought that I Changed this to two native builds, but I can't see here right now. I just forget I just have to do that, you know, and other reasons, but What I'm going to tell you is that we have a Native perspective as well. So I can't just do this and I can say and I can say to the operator Hey, we build my service in native mode and I will have that Running in native mode that means that the the build time I will strip out all Java code from my service and Like Native application of Java that powers powered by Grail VM and Quarkus. So I want to change that right now because we take a lot of time to build And I want to show you guys More things in these statements that I have So there is all these pods here They are all responsible to do something like the Kafka pods the zookeeper pod that is the The The pod that keeps my Kafka cluster, you know running and you don't need to know nothing about that because the operator is doing His job of maintaining this these things working if we delete something for example, the operator will recreate for you Well, let's get back to the Presentation because I want to show you guys a Small demo in this, you know in five minutes like This is the more Real-life example real-life demonstration that we have for example you have in your company Application like oh, I have a reactive user interface I have a backhand. I have another service that I can call and etc. And these are other service can call, you know External services. So for example, we have this UI That is receiving some data from from users in this case The location of theirs. So what is your location? Where is your left and then on to so This information I'm going to start a process that will gas if it's going to rain or not and to know that I need Forecast information for the location of the user, right? And I don't know the forecast information. I have to ask for an external services and to keep the All my external service into a unique interface. I'm using here an API gate to pattern That's the using the chemo framework. Have you guys heard about chemo for okay, so it is a Java library for transformation and for integration of tanks so you can transform xmO into Emo You can transform xls and Emo you can transform anything to another anything okay, so basically here My gate is calling to weather services they have a similar domain model, but they are to find interface It is pretty different because Yahoo implements the their interface of whether like the way they they want to and what we weather as well But both can tell me if it's gonna rain or not in that location, right? So I just call this or that using a load balance feature here. So wait One time I call the weapon weather and the other time I call the Yahoo So it is nice because I have a limit bed with both services So I came you know keep it calling it one and another each time so if you guys took your phone and By your camera to this you're going to see the application running your phone. So what is the what is what is the beauty of this thing? You can actually Well, let me try it here I'm gonna open and What's gonna Happen here Myself when I'm going to send my location To the cogito service and they could have served us who will call the chemo and we'll call External services and we are going to know if you're gonna rain or not So we can safely go outside because I'm not gonna rain. So This is a real that is a real example that we just did and We don't even you know We used the cloud with the cogito and we use a real life application to do that, you know, and you guys With your cell phone. It's nice Although it is an awful project. We can do things like this. So let's see what we are doing here Our process is pretty simple. We just get the weather forecast. We call an external service And I'm gonna show you guys how I call an external service and it's external service It's another service Here I have a business rule that will shack for the for the output of this service like Let me figure out if you're that a lot for the humidity Temperature and location with to an array or not and then I'm going to end the process This two process here is just no scripting that is Putting on the log something because I'm nervous. I like to see those things And How I'm doing that When we deploy our service, we have Kubernetes API inside our cogito service. That is we call cloud services API that we have in cogito And they this API this is smart enough to know that The cogito is running on a Kubernetes cluster and then this crap for service with this label and I told in the process that I Looking for a process that has this label On the service forecast equal service if I have a service forecast equals service I'm going to call it using a specified interface, of course and After that, I'm going to decide it's gonna rain out. It is pretty simple. What what is the condition of the? The output always rain so it's gonna rain Really But we can't extrapolate this thing, you know, like We don't need we don't need to know much about the Yahoo service and nothing like that I just want to know the about my domain data. So cameo there is translating all the data from the Yahoo and Open wider into a common domain Format that I understand and I use that domain sign my process You know, that is another example for using your domain data to do nice things like knowing if you're gonna rain or not So we have the CLI that guys show it to you this common view deploy the service that you saw the whole Architecture the whole project is on is on github on this. There's a link on the presentation I'm gonna share with you with you guys and you can deploy on your Kubernetes on your Open ship the all these example if you know if you haven't any questions You can reach us out and those all the resources here and thank you. Thank you. Thank you very much This is the another care code that we love This is a workshop that you can do On your home, you know, that's a lot of Instructions there are now how to get started with gojito. You don't need an open shift for this First part of the workshop. We just went to build your first could do service and run run it locally We we did that workshop yesterday. It was pretty fun to have that with the guys here and if in that workshop we also have a feedback link that is a Back form that we are looking at for opinions from outsiders like They are using could you tell if they are Enjoying using could you tell if they have any questions or if they need something for us They could just ask here Also, we have the good development at Google groups comm that is the our main list for development So you can know just send a message there. Oh, I'm having trouble with could you tell because it is lame Or there's something here that isn't working Like you are you guys are saying so felt free to reach us there Also on Twitter. So that's much of all what we have to say. Yeah, that's pretty much it So you guys can reach us on the Google group there. That's where the mailing list for the entire team is there We have the Twitter handle for for the project as well And yeah, if you guys have any questions now any Yeah, yeah, sure. Yeah, so Is the data index Yeah Yeah, that's a good question every time you do Okay, so that the question is that First where that the GraphQL service is deployed And the second is how the data is capable of creating the domain specific domain, right? So I'm showing the open ship that okay. Yeah, go ahead So the data index is the end point for the GraphQL That that's actually the only thing that the data expose is the GraphQL endpoint. That's the only point that you can Interactive the data x the second point is for when you enable persistence into a kuzhito runtime application As we work with infinite span we use protopuff to persist the data and for that we need a Protofile that protofile is a definition of your domain That right so it's the replication of the postures that you have on your local Project, this is generated. It's auto generated by kuzhito when you compile the project You share this with the data index. Yeah, the operator will take this protocol file while it's building our application And we'll create a conflict. Yeah, and we'll create a conflict map of the file and register that file with them Yeah for for the communication with Phoenix pen Yeah, it is the hot hot Protocol that's the one we use to communicate with infinite span. Yeah, but we also Load this and pass into the GraphQL schema. That's all guys. Thank you. Thank you