2011-02-26 112 views
1

我的问题是策略运行两次而不是一次。Siebel策略只应执行一次执行两次

该策略在oportunity字段[status]更改为“close”时运行。该策略执行一个工作流程,但是当我更改该字段时,该策略会以2-15秒的延迟间隔运行两次(为该机会创建一个活动)两次执行工作流程。

我搜索了一下是否有另一个策略在该字段中运行,并且我确认该策略运行两次(完全相同的策略)。我尝试在工作流中创建查询和决策点以“验证”是否创建了一个活动并且它可以工作,但前提是该策略的运行延迟时间大于9秒。如果工作量少于此量,则工作流将运行两次。

我该如何解决这个问题?

回答

1

工作流策略用于管理数据库触发器。触发器在s_escl_req表中创建一条记录,所以看看这里发生了什么。然后:

  • 确保你只有一个工作流程监控代理
  • 运行产生触发,然后再试一次。

如果您想要更详细地进行调试,请查看SIEBEL_ROOT \ siebsrvr \ trigger.sql文件以查看您的表和字段是否会发生两次。如果是这种情况,您可能希望过期一些策略。

PS:要解决这个正确的方法是在MetaLink上搜索...

0

这里是我会做:

  1. 检查数据库触发器的机遇表(S_OPTY我认为)用数据库工具查看是否存在两个意外事件触发器;工作流策略的行ID应该在那里。如果是这种情况,请按照先前的回答所述删除并重新生成触发器。

  2. 如果没有,请参阅S_ESCL_REQ(其中发送立即触发器)和S_ESCL_STATE(其中发送延迟触发器)中发生的情况,并查找BT_ROW_ID与S_OPTY记录的ROW_ID匹配的记录。这将有助于进一步调查。发回!