第二十七章 开发Productions - ObjectScript Productions - 定义业务流程 - 关键原则
关键原则
在开发业务流程时,请考虑以下关键原则:
- 有时希望使响应对象成为传入请求对象的修改版本,分阶段进行修改可能很有用。但是,不要修改传入的请求对象。而是将其复制到上下文变量(或者,对于自定义业务流程,将数据复制到局部变量)。然后修改副本。
- 同步发送消息时要小心(只能在自定义业务流程中或
BPL中的<code>中执行)。
当业务流程A同步调用业务流程B时,流程A不会继续,直到收到响应。如果进程 A 需要完成对其他进程 (B) 的调用才能完成自身,并且如果这些进程共享参与者作业池,则如果没有空闲的参与者作业来处理被调用的业务流程,则参与者池可能会陷入死锁( B).
发生这种情况是因为在被调用业务流程返回之前,调用业务流程无法完成并释放参与者作业,但被调用业务流程无法执行,因为没有空闲的参与者作业来执行它。
另请注意, IRIS 无法在真正的同步调用期间关闭。
最好使用 SendRequestAsync() 并在 OnResponse() 方法中处理响应消息。如果需要同步调用,可以通过配置被调用的业务流程(B)使用自己的作业池来避免这个问题。
- 如果单一作业业务流程发出请求并等待响应,则该流程将失去
FIFO功能。

.png)


