Product Documentation

アプリケーションの分析

Jul 08, 2016

アプリケーションのセットに対するアルゴリズム結果を取得するには、まず特定のReportConfigurationに対してアプリケーションを分析する必要があります。 アプリケーションの分析は、ReportConfigurationオブジェクトまたはServer.ReportConfigurationが返すオブジェクトからトリガーされます。

単一のモジュールについては、ReportConfigurationオブジェクトのAnalyzeメソッドを使用します。次に例を示します。

using AppDNA = Citrix.SDK.AppDNA;  AppDNA.Server appdna; //Connect appdna //…          public void Analyze(string reportConfigIdentifier, IEnumerable applications)         {             var reportConfig = appdna.ReportConfiguration.Get(reportConfigIdentifier);             var analysis = reportConfig.Analyze( applications );             analysis.WaitForCompletion();              switch (analysis.ProcessingState.State)             {                 case AppDNA.RunningState.Canceled:                     Console.WriteLine("The analysis was canceled");                     break;                 case AppDNA.RunningState.Completed:                     Console.WriteLine("The analysis completed successfully");                     break;                 case AppDNA.RunningState.Failed:                     Console.WriteLine("The analysis failed with error: " + analysis.ProcessingState.Result);                     break;             }         }

複数のモジュールを分析するには、Server.ReportConfiguration.Analyzeメソッドを使用します。これはより効率的です。 次に例を示します。

public void Analyze(IEnumerable applications)         {             var allReportConfigurations = appdna.ReportConfiguration.Get();             var enabledReportConfigurations = new List();             foreach (var config in allReportConfigurations)             {                 if (config.Enabled)                     enabledReportConfigurations.Add(config);             }              var analysis = appdna.ReportConfiguration.Analyze(enabledReportConfigurations, applications);             analysis.WaitForCompletion();              switch (analysis.ProcessingState.State)             {                 case AppDNA.RunningState.Canceled:                     Console.WriteLine("The analysis was canceled");                     break;                 case AppDNA.RunningState.Completed:                     Console.WriteLine("The analysis completed successfully");                     break;                 case AppDNA.RunningState.Failed:                     Console.WriteLine("The analysis failed with error: " + analysis.ProcessingState.Result);                     break;             }         }
注:例外が発生するため、無効なreportConfigurationを使用して分析しないでください。

進行状況の監視

Analyseに対する呼び出しから返されるAnalysisオブジェクトを使用して、分析の進行状況と成功を監視します。 Analysis.ProcessingStateによりINotifyPropertyChangedが実装されます。これにより、たとえば分析が進むにつれてGUIアプリケーションのコントロールを分析の詳細情報で更新することができます。

WaitForCompletionからの復帰からは、分析が成功したかどうかがわかりません。 処理結果を得るには、Analysis.ProcessingState.Stateプロパティを確認します。 WaitForCompletionメソッドは分析の実行が終了するまで待機しますが、現在のスレッドのSynchronizationContextでイベントハンドラーが発生することを許可します。

現在のスレッドのSyncronizationContextを実行せずに完了を待機するには、一般的にはThread.Sleep(…)呼び出しをループ内で使用して、Analysis.IsFinishedがtrueを戻すまで待機します。