Go (Golang)
Project Information
- Repository: github.com/QuantumDMN/dmn-go-sdk
Installation
go get github.com/QuantumDMN/dmn-go-sdk
Usage
Below is an example of how to initialize the client and evaluate a decision.
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/QuantumDMN/dmn-go-sdk/pkg/quantumdmn"
"github.com/google/uuid"
)
func main() {
// Configuration
apiURL := "https://api.quantumdmn.com"
authURL := "https://auth.quantumdmn.com"
keyFile := "path/to/service-user.json"
projectIDStr := "YOUR_DMN_PROJECT_ID"
definitionID := "YOUR_DEFINITION_ID"
// Zitadel project ID for audience scope (different from DMN project ID)
zitadelProjectID := "YOUR_ZITADEL_PROJECT_ID"
ctx := context.Background()
// 1. Parse Project ID
pID, err := uuid.Parse(projectIDStr)
if err != nil {
panic(err)
}
// 2. Create Token Provider
tokenProvider, err := quantumdmn.NewZitadelTokenProvider(keyFile, authURL, zitadelProjectID)
if err != nil {
panic(err)
}
// 3. Create Engine Client
client, err := quantumdmn.NewEngineClient(apiURL, pID, tokenProvider)
if err != nil {
panic(err)
}
// 4. Prepare Context
evalContext := map[string]interface{}{
"RequestedAmt": 1000,
}
fmt.Printf("Evaluating definition %s in project %s...\n", definitionID, projectIDStr)
// 5. Evaluate
result, err := client.Evaluate(ctx, definitionID, evalContext)
if err != nil {
panic(err)
}
// 6. usage of result
resultJSON, _ := json.MarshalIndent(result, "", " ")
fmt.Printf("Result:\n%s\n", resultJSON)
}