Skip to main content

A simple library for simple connecting to DecisionRules API

Project description

DecisionRulesPy

VERSION 3 CONTAINS MAJOR CHANGES IN API INTERFACES AND NOW SUPPORTS RULEFLOWS CRUD

A simple library that allows you to easily connect to DecisionRules.io from your application.

Usage

  • Solver (DecisionTables, ScriptRules, RuleFlow)
  • Management API (CRUD operations on DecisionTables and RuleFlows)

1 - Solver

Solver is designed for solving rules made in DecisionRules application.

1.1 - Defining solver init

Before you start solving rules you need to setup an SolverApi instance. How to do so is shown below.

import decisionrules

async def solver_test():
    solver = decisionrules.SolverApi(solver_api_key)

1.2 - Defining solver method with data

Solver method expects 5 arguments

  • SolverType - enum value - mandatory
  • RuleId - str - mandatory
  • Data - dict or json str - mandatory
  • SolverStrategy - enum value - mandatory
  • Version - str - optional
async def solver_test():
    data = {"say": "Hello from python"}

    solver = decisionrules.SolverApi(api_key)

    # SolverType enum defines type of solver (Rule or Compostion)
    response = await solver.solve(decisionrules.SolverType.RULE, get_rule, data, decisionrules.SolverStrategies.STANDARD)

    response2 = await solver.solve(decisionrules.SolverType.RULEFLOW, compo_rule, data, decisionrules.SolverStrategies.STANDARD)

1.3 Solver with custom domain

For using custom domain just add CustomDomain instance to the init method with url and protocol parameters.

async def solver_test():
    data = {"say": "Hello from python"}

    solver = decisionrules.SolverApi(api_key, decisionrules.CustomDomain("YOUR_URL", decisionrules.Protocols.HTTPS))
    
    response = await solver.solve(decisionrules.SolverType.RULE, get_rule, data, decisionrules.SolverStrategies.STANDARD)

    response2 = await solver.solve(decisionrules.SolverType.RULEFLOW, compo_rule, data, decisionrules.SolverStrategies.STANDARD)

2 - Management API

Management api is accessible via ManagementApi and required management api key that you can obtain in api key section in DecisionRules app.

Data for ruleflow import methods are represented as an array where index0 = RF, and index1...indexn are DTs

async def management_api_test():
    manager = decisionrules.ManagementApi(mng_key)

    #Or with custom domain

    manager = decisionrules.ManagementApi(mng_key, decisionrules.CustomDomain("YOUR_URL", decisionrules.Protocols.HTTPS))

2.1 Management API usage example

async def management_api_test():
    manager = decisionrules.ManagementApi(mng_key)

    await manager.get_rule(get_rule)
    await manager.get_rule(get_rule, "1")
    await manager.get_space(get_space)

    await manager.update_rule(put_rule, "1", put_data)
    await manager.create_rule(post_rule, post_data)
    await manager.delete_rule(delete_rule, "1")

    await manager.create_ruleflow(new_ruleflow)
    await manager.get_ruleflow(id)
    await manager.get_ruleflow(id, 1)
    await manager.update_ruleflow(id, 1, ruleflow)
    await manager.export_ruleflow(id, 1)
    await manager.export_ruleflow(id)
    await manager.import_ruleflow([new_ruleflow_with_dt], 1,)
    await manager.import_ruleflow(id, 1, [new_ruleflow_with_dt])
    await manager.import_ruleflow([new_ruleflow_with_dt])
    await manager.delele_ruleflow(id)

    await manager.getItems(tags)
    await manager.updateTags(ruleId, data, version)
    await manager.delete(ruleId, version)

2.3 All available methods in management API

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

decisionrulespy-3.0.5.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

decisionrulespy-3.0.5-py3-none-any.whl (6.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page