2008年1月29日星期二

怎样限制并发请求只能在指定时间运行?

怎样限制并发请求只能在指定时间运行?

定义新的并发管理器,通过“Specialization Rules”将需要限定运行时间段的并发请求添加到新定义的并发管理器中。再定义work shift,定义并发请求的运行时间段,并将这个work shift分配给新定义的并发管理器。


步骤(没有图片,arsenefang已发):
1) 定义work shift。






2) 定义并发请求管理器。















3) 通过Specialization Rules将需要限制将需要限定运行时间段的并发请求添加到新定义的并发管理器中。







4) 将work shift分配给并发管理器。







其他测试:
1) 对于新定义的并发请求,并不会自动分配给某一个并发管理器,需要手工添加。
2) 如果已经将一个并发程序分配到某一个并发管理器A,但是实际上却在另一个并发管理器B中运行,需要检查另一个并发请求管理器中是否也包括(include)了这个并发程序。如果不希望并发程序在B中运行,可以在B通过exclude这个并发程序。

想知道并发程序究竟在哪些并发管理器中?
通过界面查询比较麻烦,不能根据并发程序的名称进行查询,如果需要,可以通过如下SQL来完成。

SELECT a.type_id, a.queue_application_id, a.concurrent_queue_id, a.type_code,
a.type_id, a.include_flag, d.user_concurrent_program_name,
c.description, c.user_concurrent_queue_name
FROM applsys.fnd_concurrent_programs_tl d,
applsys.fnd_concurrent_queue_content a,
applsys.fnd_concurrent_programs b,
fnd_concurrent_queues_vl c
WHERE (a.type_id = b.concurrent_program_id)
AND (a.type_application_id = b.application_id)
AND (b.application_id = d.application_id)
AND (b.concurrent_program_id = d.concurrent_program_id)
AND a.concurrent_queue_id = c.concurrent_queue_id
AND d.user_concurrent_program_name = Your concurrent program name

3) 对于有两个并发管理器都包括同一个并发程序,这个并发程序究竟在哪个并发管理器中运行,比较随机。可能,哪个free,哪个work。这和设定process的个数,sleep的时间相关,还请有研究的同志多多发言。

没有评论: