
微流程是生存期较短的 BPEL 流程。它们可以在事务中运行,也可以在对该微流程的 SCA 组件指定的活动会话中运行。以下内容对作为事务一部分执行的微流程进行说明。
微流程不可中断。因此,微流程不能包含等待外部事件或用户交互的活动,例如人员任务活动。
微流程是瞬态流程。微流程的流程实例状态保存在内存中,而不是存储在运行时数据库中。但是,可以将微流程实例的状态保存在审计日志或公共基本事件中。
下图说明微流程的事务以及与微流程进行交互的服务。事务边界内的服务参与微流程事务;边界外的服务不参与该事务。

微流程在一个事务中运行。然而,此微流程调用的服务可能会包含多个事务。这是因为,通过调用活动调用的服务既可以参与微流程的事务也可以在它自己的事务中运行。
| 目标组件或导入的首选交互样式 | 单向操作 | 请求-响应操作 |
|---|---|---|
| 任意 | 异步调用 | 同步调用 |
| 同步方式 | 同步调用 | 同步调用 |
| 异步 | 异步调用 | 同步调用 |
根据这些设置的不同,下列规则适用于所调用的服务:
| joinTransaction | suspendTransaction = true | suspendTransaction = false |
|---|---|---|
| joinTransaction = true | 此服务不参与微流程事务 | 此服务参与微流程事务 |
| joinTransaction = false | 此服务不参与微流程事务 | 此服务不参与微流程事务 |
如果某个服务参与微流程事务,那么仅当落实微流程事务时,才会保存该服务对事务资源所作的更改。如果某个服务未参与微流程事务,那么可以保存该服务对事务资源所作的更改,即使该事务回滚亦如此。可以使用补偿来撤销该服务所作的更改。