在Siebel的Workflow 提供了Siebel Operation来实现BC上的Insert,Query,Update,Delete.
1. 使用Siebel Opration需要为Workflow 指定对应BO的Primary BC的Row_id作为Object Id,否则会出现错误
Cannot Evaluate Expression....
但是在使用Job来跑Workflow时,无法提供准确的Object Id, 所以在使用Siebel Operation的Query时,只可以使用Literal来设置查询条件,无法使用Expression.
同时如果要进行Update,必须先对Primary BC进行查询
例如
Start - Query on Primary BC - Update on Copy of Primary BC - End
2. 在Workflow中对时间的处理容易出错,不建议在WF中处理时间,例如
Siebel Operation Update
Search Spec = Timestamp()-[Created] > 10 (天)无法得到正确结果
Work Around
BC上新建计算字段: TimeCalc
iif(Timestamp()-[Created]>10,'y','n')
下一步在WF中
Search Spec = [TimeCalc]="Y"
3. 8.1中新增operation upsert
可以在serchspec中设置搜索条件,
Upsert则会先一句serchspec中的条件判断是Update或者Insert
4. SearchSpec的语法
a. Type = Literal
不能在等号的右边引用field值或者process property的值。例如
[Id]=[&Object Id] 错误
[Id]=[Inbound Id] 错误
b. Type = expression 等号的右边引用field值或者process property的值
[Id]=[&Object Id] 正确
5. 使用Runtime Event 或则 Workflow Policy调用WF时,都会设置object Id为当前记录ID,并把当前BO的primary bc传送到WF中。
所以如果有需求或者primary bc其他字段的值,可以通过以下步骤
a 创建step business service
b 指定 name = workflow utilities method = echo
c output argument 中将bc 指定为primary bc
6 Workflow policy触发的WF,其实是由monitor agent 的server component来运行的。
如果启动组件后发现一直为online 状态,则表明该server component 的default task参数没有指定
同时monitor agent另有一参数 action interval 表示在一定时间内如果触发两次以上,则WF只会被调用一次