Plone wftool.doActionFor不会触发内容规则

Plone wftool.doActionFor不会触发内容规则,plone,Plone,我已经设置了一个内容规则,当我通过web界面更改灵巧对象的状态时会触发该规则,但当我以编程方式更改状态时,不会触发该内容规则 我使用典型的workflow_tool.doAction来更改review_状态。目录/对象中的“审阅”状态似乎已更改为新状态 有什么线索吗 我使用的是plone 4.2.5和Dextrity 1.2.1 这是我用来更改状态的代码: cart = brains[0].getObject() wftool = getToolByName(self.context, 'por

我已经设置了一个内容规则,当我通过web界面更改灵巧对象的状态时会触发该规则,但当我以编程方式更改状态时,不会触发该内容规则

我使用典型的workflow_tool.doAction来更改review_状态。目录/对象中的“审阅”状态似乎已更改为新状态

有什么线索吗

我使用的是plone 4.2.5和Dextrity 1.2.1

这是我用来更改状态的代码:

cart = brains[0].getObject()
wftool = getToolByName(self.context, 'portal_workflow')
wftool.doActionFor(cart, 'charge')
wftool.doActionFor(cart, 'pay')
modified(cart)

最后我发现,一次只触发一个转换,plone会按预期触发内容规则

因此,在我的案例中,我以以下方式设置了一个解决方案:


状态为:已创建->已收费->已付费,内容规则在更改为状态已付费时触发。有时,我必须在一次交易中将状态从创建更改为支付。我启用了从创建的状态转换为支付,绕过中间状态收费。因此,我只需要触发一次到paya创建的对象的转换,内容规则就起作用了

在Plone 4.3中对我来说很好。您使用的是什么版本的Plone、Dextrity等?请用这些详细信息编辑您的问题。听起来您需要检查Zope 3 events doActionFor fire和events content rule侦听的内容。可能需要手动触发此事件。@oggers在Plone 4.2.5和Dextrity 1.2.1中对我来说也很好。我从浏览器视图中调用
doActionFor
——您也这样做了吗?请详细解释您的设置。你在问题中添加的细节越多,你就越有可能得到有用的答案。你能给我们展示一下你用以通过编程改变状态的代码吗?