高级模式
内置的错误处理机制(Built-in Error Handling Mechanism)
CSM框架提供了内置的错误处理机制,用于捕获和处理模块运行过程中出现的错误。每个CSM模块在发生错误时,会自动广播Error Occurred状态更新,任何订阅了该状态的模块都可以捕获并处理这些错误。
工作原理
- 当CSM模块中出现错误时,错误会通过错误线传递到模块中
- 错误信息会触发CSM模块轮转到
Error Handler状态 - 在
Error Handler状态中,会将错误信息通过Error Occurred状态抛出 - 任何订阅了该模块
Error Occurred状态的模块,可以捕获并处理此错误
全局错误处理
通过在主程序中订阅所有模块的Error Occurred广播事件,可以实现全局的错误处理机制:
Error Occurred@* >> Error Handler -><register>
当任何CSM子模块抛出Error Occurred状态变化时,会触发主程序的Error Handler状态,处理捕获的事件。
示例
可参考范例 /Example/4. Advance Examples/1. Global Error Handling
工作者模式(worker mode)
工作者模式(Worker Mode)是CSM框架中的一种高级模式,允许多个可克隆的CSM实例作为节点运行,共同组成一个工作者模块。
工作原理
- 为避免命名冲突,工作者模块使用附加”#”后缀的模块名称,告知CSM框架这是一个工作者模块
- 当消息发送给工作者模块时,将使用公平队列机制处理它,第一个空闲的模块将会处理这个消息
- 从外部看,系统表现得好像只有一个模块在运行,所有CSM概念(例如同步、异步和广播)都保持不变
特点
- 提高系统的并发处理能力
- 负载均衡,自动将消息分配给空闲的工作者
- 从外部看,工作者模块表现为单个模块
- 支持动态扩展工作者数量
实现步骤
- 使用高级VI将CSM模块标记为worker模式(添加#作为后缀)
- 异步或同步调用多个工作者CSM模块
- 向工作者模块发送消息,系统会自动将消息分配给空闲的工作者
- 退出时,向所有工作者模块发送
Macro: Exit消息
示例
可参考范例 /Example/4. Advance Examples/2. Worker Mode
责任链模式(Chain of Responsibility mode)
责任链模式(Chain of Responsibility mode)是CSM框架中的一种高级模式,允许多个CSM模块按顺序处理消息。
工作原理
- 责任链CSM模块应始终以后缀”$”和整数标记,例如 “CSMName$1”、”CSMName$2”等
- 每个单独的链模块只能处理特别允许的消息
- 如果一条消息被多个链模块允许,则顺序最低的链模块将处理该消息,并且该消息不会再被更高顺序的链模块处理
- 如果链中没有模块可以处理该消息,将返回一个错误
特点
- 解耦请求发送者和接收者
- 允许动态组合处理流程
- 每个模块只需要关注自己能处理的消息
- 支持灵活的处理顺序调整
实现步骤
- 为每个链模块添加特殊允许的消息
- 使用后缀”$”和整数标记链模块,例如 “Chain$1”、”Chain$2”等
- 向责任链模块发送消息,系统会自动将消息传递给第一个能处理它的链模块
- 退出时,向责任链模块发送
Macro: Exit消息
示例
可参考范例 /Example/4. Advance Examples/3. Chain of Responsibility Mode