將需求作為註解併入狀態圖程式碼

如果您具有狀態圖中的特定狀態或轉移符合的需求,則可以將這些需求作為註解,併入為狀態圖產生的程式碼中。

開始之前

這項特性可用於 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;
}

回饋