从引擎的使用场景,可分为三层:
引擎为外部接口开发者提供两种编程模型:
API访问和安全
安全是指调用方在和AWS PaaS服务间网络传输的通讯安全,要求是AWS PaaS的Web层只允许接受SSL(Secure Sockets Layer 安全套接层)的处理请求。(AWS PaaS云实例已开启SSL)
API类型 | 网络层采取的安全控制 |
---|---|
HTTP(s) | - 每次对参数用私钥签名,防止中途篡改、恶意拼凑 - 对请求的timestamp进行检查,控制url存活有效期 |
SOAP | - 对入站参数进行解密、签名验证 - 对出站结果进行加密、签名计算 - 控制服务请求的有效期 |
Java SDK | 本地处理,无需处理网络层安全隐患 |
引擎层在架构上也被设计成插板式轻量级架构,所有BPMN2的行为实现和接口机制也基于该扩展实现。
引擎产生的运行数据(Runtime Data,又称为控制数据)不缓存。
引擎对内部实现开发者提供可插拔的编程接口:
引擎层开发属于AWS内部编程。如果您对BPMN2规范和引擎内部处理机制的经验不足,不要扩展内部编程接口
为了适应未来BPMN2新规范甚至替代规范的升级,AWS PaaS对流程定义设计了解耦层。无论是AWS自带的流程设计器还是采用第三方BPMN2规范,都必须通过一个名为BPMNI/O
的转换层进行处理,并转换成引擎能正常执行的元结构。
为程序读写流程结构开放的仓库API示例
//读取一个符合BPMN2.0的流程定义文件
String schema=SDK.getRepositoryAPI().getBPMN(processDefId);
//读取一个BPMN图
byte[] diagram=SDK.getRepositoryAPI().getBPMNDiagram(processDefId, diagramType);
这是被缓存的一层,禁止绕过API对外部物理文件进行操作
AWS BPM PaaS的流程引擎内核是一个基于令牌消费的自动机,对API开发者和商业用户是一个黑盒子,无需熟知其原理。
不过,我们还是为希望进一步了解其工作原理的技术人员提供概念参考。
当多个AWS节点集群时,可以组成更强大的并行流程引擎。
流程运行数据又称为过程日志数据,记录引擎各种行为的处理过程。主要包括: