import os
from quantumdmn import DmnEngine, ZitadelTokenProvider, FeelValue, ApiClient, Configuration
key_file = "path/to/service-user.json"
issuer_url = "https://auth.quantumdmn.com"
api_url = "https://api.quantumdmn.com"
project_id_auth = "YOUR_ZITADEL_PROJECT_ID"
project_id_dmn = "YOUR_DMN_PROJECT_ID"
definition_id = "YOUR_DEFINITION_ID"
auth = ZitadelTokenProvider(key_file, issuer_url, project_id_auth)
token = auth.get_token()
config = Configuration(host=api_url)
config.access_token = token
config.api_key = {'Authorization': f'Bearer {token}'}
config.api_key_prefix = {'Authorization': ''}
client = ApiClient(config)
client.set_default_header("Authorization", f"Bearer {token}")
engine = DmnEngine(client, project_id_dmn)
context = {
"age": FeelValue.of_number(25),
"income": 50000,
"role": "admin",
"active": True
}
print(f"Evaluating definition {definition_id}...")
try:
result = engine.evaluate(definition_id, context)
print("Result:")
for key, eval_result in result.items():
raw_value = eval_result.value.to_raw() if eval_result.value else None
print(f" {key}: {raw_value}")
except Exception as e:
print(f"Evaluation failed: {e}")