为Python项目实现工作流(或状态机)的库。
项目描述
XWorkflows是一个库,可以轻松地为Python对象添加工作流或状态机。
它已完全测试与Python 2.7以及从3.4到3.9的所有版本兼容
链接
示例
它允许轻松定义工作流,将其附加到类中,并使用其转换
import xworkflows
class MyWorkflow(xworkflows.Workflow):
# A list of state names
states = (
('foo', "Foo"),
('bar', "Bar"),
('baz', "Baz"),
)
# A list of transition definitions; items are (name, source states, target).
transitions = (
('foobar', 'foo', 'bar'),
('gobaz', ('foo', 'bar'), 'baz'),
('bazbar', 'baz', 'bar'),
)
initial_state = 'foo'
class MyObject(xworkflows.WorkflowEnabled):
state = MyWorkflow()
@xworkflows.transition()
def foobar(self):
return 42
# It is possible to use another method for a given transition.
@xworkflows.transition('gobaz')
def blah(self):
return 13
>>> o = MyObject()
>>> o.state
<StateWrapper: <State: 'foo'>>
>>> o.state.is_foo
True
>>> o.state.name
'foo'
>>> o.state.title
'Foo'
>>> o.foobar()
42
>>> o.state
<StateWrapper: <State: 'bar'>>
>>> o.state.name
'bar'
>>> o.state.title
'Bar'
>>> o.blah()
13
>>> o.state
<StateWrapper: <State: 'baz'>>
>>> o.state.name
'baz'
>>> o.state.title
'Baz'
钩子
可以将自定义函数连接到事务,以便在转换前后、进入/离开状态时运行...
class MyObject(xworkflows.WorkflowEnabled):
state = MyWorkflow()
@xworkflows.before_transition('foobar')
def my_hook(self, *args, **kwargs):
# *args and **kwargs are those passed to MyObject.foobar(...)
pass
@xworkflows.on_enter_state('bar')
def my_other_hook(self, result, *args, **kwargs):
# Will be called just after any transition entering 'bar'
# result is the value returned by that transition
# *args, **kwargs are the arguments/keyword arguments passed to the
# transition.
pass
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
xworkflows-1.1.0.tar.gz (39.4 kB 查看哈希值)
构建分发
xworkflows-1.1.0-py2.py3-none-any.whl (13.5 kB 查看哈希值)
关闭
xworkflows-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e3a9f6e9de6bcd779335f2ce4f87445ad8047771be9c6c96e347fb8622e2f27 |
|
MD5 | 0e1dcbe08bb2282b7ce39a082510be67 |
|
BLAKE2b-256 | d2ffb49f4422f2406b790e468a758acc46d80fc7fdbfbd1d55297617ee8a0efa |
关闭
xworkflows-1.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 943571904066e03946016c5710cfea97847c1931c2e07bdd61827a01bce38d80 |
|
MD5 | 7c0b5e09aa125f150b9271fac8f2bd09 |
|
BLAKE2b-256 | 2e1349ba48867b92bca3b277abe45810f2dc440df8c1df38de2c23a8b52171c2 |