Handler to programmatically convert a local SonataFlow project into Kubernetes manifests to deploy with the operator.
Add this module to your project's dependencies:
go get github.com/kiegroup/kogito-serverless-workflow/workflowproj
Then you should have access to the main entry point of this package, which is the workflow project handler builder.
The API is simple enough to describe in a few lines:
package main import ( "os" "github.com/kiegroup/kogito-serverless-operator/workflowproj" ) func Main() { // we are ignoring errors just for demo purposes, but don't do this! workflowFile, _ := os.Open("myworkflow.sw.json") propertiesFile, _ := os.Open("application.properties") specFile, _ := os.Open("myopenapi.yaml") defer workflowFile.Close() defer propertiesFile.Close() defer specFile.Close() // create the handler handler := workflowproj.New("mynamespace"). WithWorkflow(workflowFile). WithAppProperties(propertiesFile). AddResource("myopenapi.yaml", specFile) // You can easily generate the Kubernetes manifests to later use client-go to deploy them in the cluster... objs, _ := handler.AsObjects() // client.Create(...), other stuff // ... or you can save the files locally to use them later or to integrate in a GitOps process _ = handler.SaveAsKubernetesResources("/my/dir/") }
The SonataFlow
custom resource generated is annotated with the devmode profile . Every other resource added to the project is a ConfigMap
handling these resources for you.
Given that you already have the SonataFlow Operator installed , to deploy the generated project you can simply run:
kubectl apply -f /my/dir/* -n "mynamespace"