プロシージャ ベースの構成のプログラムによる作成
プロシージャ ベースの構成を作成すると、モデルに対して変更を行う順序を指定できるようになります。チェックを整理してプロシージャにまとめるには、プロシージャ API を使用します。プロシージャ内のチェックは、前のチェックがパスするまで実行されません。プロシージャ ベースの構成はチェックが失敗するまで実行されます。その後は、モデルを変更して、チェックにパスし次のチェックに進めるようにする必要があります。そのため、チェックにパスするようにモデルに対して行う変更は、所定の順序で行うことになります。
プロシージャ ベースの構成を作成するには、次の作業を行います。
- モデル アドバイザーの概要の構成のカスタマイズの情報を確認します。 
- モデルの変更の順序を決定します。 
- モデルに対して行う変更の情報を取得できるチェックを特定します。たとえば、モデル最適化設定を変更する場合は、「最適化の設定をチェック」チェックで設定に関する情報を取得します。カスタム チェックと MathWorks® により提供されるチェックを使用できます。 
- (オプション) カスタマイズ ファイルでカスタム チェックを作成します。モデル アドバイザー チェックの作成を参照してください。 
- プロシージャ ベースの構成用に、チェックをプロシージャ単位に整理します。 - プロシージャ API を使用してプロシージャを作成します。詳細については、プロシージャ ベースの構成の作成を参照してください。 
- カスタム構成を作成しますモデル アドバイザー構成エディターを使用したモデル アドバイザーのカスタマイズ。 
 
- (オプション) カスタム構成をユーザーに展開します。詳細については、カスタム構成の展開を参照してください。 
- モデルがモデリング ガイドラインに準拠していることを検証します。詳細については、モデル アドバイザー チェックの実行と結果の確認を参照してください。 
プロシージャ ベースの構成の作成
プロシージャ API によるプロシージャの作成
プロシージャは ModelAdvisor.Procedure クラス API を使用して作成します。最初にチェックをタスクに追加します。このタスクはチェックのラッパーです。これらのタスクがプロシージャに追加されます。
メモ
プロシージャ チェックを作成する場合、チェック同士の間に競合が発生することがあります。両方のチェックをパスさせることが可能か確認してください。
ModelAdvisor.Procedure クラスを使用してプロシージャ チェックを作成します。
- ModelAdvisor.Task.setCheckメソッドを使用して、各チェックをタスクに追加します。このタスクはチェックのラッパーです。チェックを直接プロシージャに追加することはできません。
- ModelAdvisor.Procedure.addTaskメソッドを使用して、各タスクをプロシージャに追加します。
プロシージャの定義
ModelAdvisor.Procedure クラスの各インスタンスのプロパティを指定するプロシージャ定義関数でプロシージャを定義します。モデル アドバイザーに追加するプロシージャごとにプロシージャ クラスのインスタンスを 1 つ定義します。その後、ModelAdvisor.Root.register メソッドを使用してプロシージャを登録します。
プロシージャにはサブプロシージャやタスクを追加することができます。このタスクはチェックのラッパーです。
- サブプロシージャをプロシージャに追加するには、 - ModelAdvisor.Procedure.addProcedureメソッドを使用します。
- タスクをプロシージャに追加するには、 - ModelAdvisor.Procedure.addTaskメソッドを使用します。
次のコードの例では、サブプロシージャがプロシージャに追加されています。
%Create a procedure
MAP = ModelAdvisor.Procedure('com.mathworks.example.Procedure');
%Create 3 sub procedures
MAP1=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub1');
MAP2=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub2');
MAP3=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub3');
%Add sub procedures to procedure
addProcedure(MAP, MAP1);
addProcedure(MAP, MAP2);
addProcedure(MAP, MAP3);
%register the procedures
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAP);
mdladvRoot.register(MAP1);
mdladvRoot.register(MAP2);
mdladvRoot.register(MAP3);次のコードの例では、タスクがプロシージャに追加されています。
%Create three tasks
MAT1=ModelAdvisor.Task('com.mathworks.tasksample.myTask1');
MAT2=ModelAdvisor.Task('com.mathworks.tasksample.myTask2');
MAT3=ModelAdvisor.Task('com.mathworks.tasksample.myTask3');
%Create a procedure
MAP = ModelAdvisor.Procedure('com.mathworks.tasksample.myProcedure');
%Add the three tasks to the procedure
addTask(MAP, MAT1);
addTask(MAP, MAT2);
addTask(MAP, MAT3);
%register the procedure and tasks
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAP);
mdladvRoot.register(MAT1);
mdladvRoot.register(MAT2);
mdladvRoot.register(MAT3);ModelAdvisor.Group.addProcedure メソッドを使用して、モデル アドバイザーでプロシージャが表示される場所を指定します。次のコードの例では、プロシージャがグループに追加されています。
%Create three procedures
MAP1=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure1');
MAP2=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure2');
MAP3=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure3');
%Create a group
MAG = ModelAdvisor.Group('com.mathworks.sample.myGroup');
%Add the three procedures to the group
addProcedure(MAG, MAP1);
addProcedure(MAG, MAP2);
addProcedure(MAG, MAP3);
%register the group and procedures
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAG);
mdladvRoot.register(MAP1);
mdladvRoot.register(MAP2);
mdladvRoot.register(MAP3);参考
ModelAdvisor.Check | ModelAdvisor.Procedure