# Functions Framework Spec
## Context
https://github.com/OpenFunction/functions-framework/blob/main/docs/v0.3.0/OpenFunction-context-specs.md
Context 中的函数元数据信息在函数生命周期内默认为只读,如:
- name,函数名称
- version,函数版本
- requestID,函数请求 id
- port,服务监听端口
- inputs,***函数输入资源*** 名称与配置信息映射表
- outputs,***函数输出资源*** 名称与配置信息映射表
- prePlugins,在函数之前执行的插件清单
- postPlugins,在函数之后执行的插件清单
- pluginsTracing,tracing 相关配置信息
## SDK
### Context 相关
即提供获取 Context 中的函数元数据信息的能力。
### 通用功能
- publish,将数据发送至指定的 ***函数输出资源***
- 一对一发送,将数据发送至一个 ***函数输出资源***
- 一对多发送,将数据发送至多个 ***函数输出资源***
## 事件
在 Functions-framework 内部需要通过 CloudEvent 的方式传递用户数据,规则如下:
- 收到原始事件时,判断原始事件是否为 CloudEvent 格式
- 是 CloudEvent 格式,判断其是否具备 *内部事件标识*
- 具备 *内部事件标识*,则解压该原始事件,取出用户数据传递给用户函数进行处理
- 不具备 内部事件标识,则将该原始事件传递给用户函数进行处理
- 不是 CloudEvent 格式,则将该原始事件传递给用户函数进行处理
- 发送用户数据时,判断是否需要将用户数据封装为 *内部事件*
- 需要,则使用 CloudEvent 事件格式封装用户数据,并附加 *内部事件标识*,之后发送至 ***函数输出资源***
- 不需要,则将用户数据发送至 ***函数输出资源***