在状态图代码中包括需求作为注释

如果状态图中的特定状态或过渡要满足一些需求,那么可以在为此状态图生成的代码中包括这些需求作为注释。

开始之前

此功能可以用于 C、C++ 或 Java 代码。
注: 此功能仅适用于“平面”状态图实现。

过程

要在状态图代码中包括需求作为注释,请完成下列步骤:

  1. 通过在浏览器中的元素下方创建需求、创建“跟踪”依赖关系或者使用锚点将需求连接到元素,使需求与状态或过渡相关联。
  2. 打开相应配置的“特征”窗口,在“设置”选项卡上验证是否选中了“在代码中包括需求作为注释”。(此选项控制 CG::Configuration::IncludeRequirementsAsComments 属性的值。)
  3. 生成代码。

结果

示例

以下是一个样本状态图以及为其生成的代码,其中包括与特定状态相关联的需求的注释。

IOxfReactive::TakeEventStatus Printer::rootState_processEvent() {
    IOxfReactive::TakeEventStatus res = eventNotConsumed;
    switch (rootState_active) {
        case Idle:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = GettingPaper;
                    rootState_active = GettingPaper;
                    /*
                    state GettingPaper
                    Realizes requirement Printer must be able to load paper for printing #:
                    
                    */
                    
                    //#[ state ROOT.GettingPaper.(Entry)
                    getPaper();
                    //#]
                    res = eventConsumed;
                }
            
        }
        break;
        case GettingPaper:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = Printing;
                    rootState_active = Printing;
                    /*
                    state Printing
                    Realizes requirement Printer must be able to print the received data after paper is loaded #:
                    
                    */
                    
                    //#[ state ROOT.Printing.(Entry)
                    print();
                    //#]
                    res = eventConsumed;
                }
            
        }
        break;
        case Printing:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = Idle;
                    rootState_active = Idle;
                    res = eventConsumed;
                }
            
        }
        break;
        default:
            break;
    }
    return res;
}

反馈