【发布时间】:2021-03-20 06:37:30
【问题描述】:
我们的 Python 应用程序目前从 YAML 文件(即将成为数据库或 Redis 缓存)加载持久规则,然后将该 YAML 转换为 JSON,然后将 JSON 对象发送到持久规则引擎进行处理。
我正在重构此规则引擎服务,并希望在我的单元测试中使用 Python 版本的规则,基本上将 Durable README 示例合并到我们的引擎中。在 Python 中创建规则集后,如何将该规则集序列化为 JSON 对象?
下面是一个有效的 pytest 单元测试,除了最后一行,我想序列化规则。
最终目标是能够以 Python 格式(可读性)编写规则,然后将它们保存为 JSON(可读性较差)。
import pytest
from durable.lang import *
from durable.engine import Ruleset
# Tests derived from examples on Durable website.
printed_value = '?'
def mock_print(s):
global printed_value
printed_value = s
return s
def test_hello(builder):
global ruleset
with ruleset('test_hello'):
@when_all(m.subject == 'World')
def say_hello(c):
mock_print('Hello {0}'.format(c.m.subject))
post('test_hello', { 'subject': 'World' })
assert printed_value == 'Hello World'
rule_as_json = ???
我什至找不到描述 Durbale 规则集 JSON 格式及其所有功能的位置。仅此文档就很有用。
更新 1:
我找到了durable支持的JSON结构的文档。 还是不知道怎么把python转成JSON。
https://github.com/jruizgit/rules/blob/master/docs/json/reference.md
更新 2:
终于找到了durable.lang库在源码中的位置:
libpy\durable\lang.py
此代码看起来很有希望遵循以更接近答案。
def post(ruleset_name, message, complete = None):
return get_host().post(ruleset_name, message, complete)
【问题讨论】:
标签: python json serialization durable-rules