组件事件模型
本节介绍 AutoCode 组件事件模型。
事件(Event)与端口(Port)类型
在 AutoCode 组件模型中,事件是组件中的通用元件,事件有一个输入端口和一个可选的输出端口。事件端口有不同的事件类型,事件类型与事件输入端口类型相同。
系统(SYS)事件:输入端口配制系统端口(Input SysPort)的事件是系统事件;
VSOA 事件:服务输入输出端口是 VSOA 端口,与 VSOA 端口直接连接的端口是 VSOA 端口,输入端口是 VSOA 端口的事件是 VSOA 事件;
COM 事件:组件之间相连接的端口是 COM 端口,输出端口是 COM 端口中的是 COM 事件; 多通道管道组件中除第一个事件以外的事件也是 COM 事件,请参考管道组件相关文档。
事件连接规则
服务输出端口连接其它组件的 VSOA 输入端口,连接关系是 1 : 1, 即每个服务输出端口只能连接到一个事件端口,每个 VSOA 事件在一个惟一确定的接口处理。
COM 输出端口连接 COM 输入端口, 一般组件连接关系为 1 : N, 即一件事件可以驱动多个事件处理;管道组件连接关系为 1 : 1,即每个事件都在一个管道通道中。
VSOA 事件输出端口连接服务输出端口, 连接关系 N : 1, 即每个服务资源可以被多个事件接口调用。
事件端口数据
事件输入端口定义了输入数据类型,输出端口定义了输出数据类型。事件端口数据类型定义规则如下:
VSOA 端口配制 JStruct 数据类型,定义了 VSOA 端口数据类型;
SYS 端口一般情况没有数据参数;
COM 输入端口数据类型与直接连接的前向 COM 输出端口数据类型一致;
COM 输出端口缺省数据类型与事件输入端口数据类型一致,用户可以配置 COM 输出端口数据类型。
COM 输出端口可配制基本数据类型,还可以配制用户在资源管理器中自定义的 Custom-Struct
结构体类型。COM 输出端口 TypeValue
属性中可以配制数据类型如图所示。
注意:
当一个事件的输出端口与输入端口数据类型相同时,输出接口将自动引用输入接口数据。
事件编程接口
一般情况下,AutoCode 在生成代码时,将为每个组件事件创建一个事件回调函数,即用户编程接口。
用户编程接口参数即事件输入数据,参数类型与事件输入端口数据类型一致;
事件如果存在输出端口,接口中还会为输出端口生成系统维护的代码,处理输出端口事件;
系统还声明了输出数据,用户需要在接口中填充输出数据数值,输出端口将输出数据传递到下一事件过程。
下面是一个典型的 VSOA 输入输出端口事件:
该事件接口示例:
图中各区域说明:
- 输入数据。
- 输出数据定义。
- 用户填充输出数据。
- 系统维护输出端口行为。
- 接口返回之间处理:释放资源,返回结果。
注意:
事件接口中有注释段提示用户编程区域与系统维护代码,用户可在自定义区域处理数据和业务逻辑。在接口文件全局环境,用户也可以自定义程序。在生成代码时,用户自定义的代码将合并到新的代码中。 一般情况下,用户不得修改系统维护的代码,用户在不熟悉 AutoCode 运行时架构时修改系统代码可能会破坏程序运行机制。