Product Documentation

Forward Pathの例

Jul 08, 2016

この例では、Forward Pathの単純なシナリオおよびタスクスクリプトの作成について説明します。

シナリオの作成

  1. AppDNAのメニューで、[Configure][Forward Path]の順に選択します。
  2. Forward Pathロジックエディターのツールバーで、[New Scenario]をクリックします。
  3. [Forward Path Script Name]ダイアログボックスで、新しいシナリオの名前と説明を入力し、[OK]をクリックします。

    新しいシナリオが作成され、エディターに開かれます。 新しいシナリオスクリプトの内容は次のとおりです。

    1 Public Function ForwardPath(ByVal currentApplication As Application)  As Output 2    ' TODO: Your new Forward Path Logic definition must be defined here. 3    ' Refer to the sample Forward Path scripts which have been provided. 4    Dim myForwardpathresult As New Output() 5 6    myForwardpathresult.Outcome = "Sample Outcome" 7    myForwardpathresult.Cost = 100 8    myForwardpathresult.RAG = RAG.Green 9 10   ForwardPath = myForwardpathresult 11 12 End Function
  4. 実用にはなりませんが、これは機能するシナリオスクリプトです。 しくみを理解するため、[Editor]ツールバーの[Test]をクリックします。

    [Application List]画面で現在選択されているアプリケーションに対してシナリオが評価され、結果が[Output]タブに表示されます。

    各アプリケーションの[Outcome]列の値が「Sample Outcome」であり、同様に、選択されているすべてのアプリケーションについて[RAG]列の値が「Green」で、[Cost]列の値が「100」であることに注意してください。 これは、これらの列の値はスクリプトの行6-8にハードコードされているからです。

    [Description]列と[Customfield]列が空白であることに注意してください。これは、シナリオにこれらの列の値が定義されていないからです。

  5. [RAG]列の値を変更して、Windows 7レポートに対するアプリケーションの実際のRAGを反映させます。 シナリオスクリプトの行8を次のように変更します。
    myForwardpathresult.RAG = currentApplication.Modules.Windows7.RAG

    これにより、[RAG]列の値がアプリケーションのWindows 7に対するRAG状態に設定されます (これは、Windows 7レポートに対してアプリケーションを分析済みであることを前提にしています。 このレポートを使用できない場合は、使用できるほかのレポートを選択してください。 プロパティエクスプローラーを使用して、ほかのレポートの参照方法を確認します)。

  6. [Test]をクリックして結果を表示します。

    [RAG]列の値に、実際のRAG値が反映されます。

  7. 次に、[Outcome]列の値がWindows 7に対するRAG状態を反映するようにします。 これを行うには、次のように行6を ここで ステートメントで置き換えます。
    If (currentApplication.Modules.Windows7.RAG = RAG.Green) Then   myForwardpathresult.Outcome = "OK for Windows 7" Else   If (currentApplication.Modules.Windows7.RAG = RAG.Amber) Then     myForwardpathresult.Outcome = "Remediation required"   Else     myForwardpathresult.Outcome = "Redevelopment required"   End If End If 

    このステートメントにより、アプリケーションのWindows 7に対するRAG状態が緑であるかどうかがテストされます。 緑であれば、スクリプトによって[Outcome]列に「OK for Windows 7」と書き込まれ、そうでなければ、Windows 7に対するRAG状態が黄色であるかどうかがテストされます。 黄色であれば、スクリプトによって[Outcome]列に「Remediation required」と書き込まれ、そうでなければ、[Outcome]列に「Redevelopment required」と書き込まれます。アプリケーションが分析済みでロックが解除されていることを前提として、RAG状態が緑でも黄色でもなければ、赤であるからです。

  8. [Test]をクリックして結果を表示します。

    [Outcome]列の値に、Ifステートメントのロジックが反映されたことに注意してください。

これは、Forward Pathのしくみを紹介することを意図した、故意に些細な内容を持つ例です。 より現実的な例を確認するには、シナリオエクスプローラーを使用してAppDNAに用意されているサンプルシナリオを参照し、プロパティエクスプローラーを使用してシナリオスクリプトで使用できるプロパティを調べます。

注: 出力 オブジェクトは、プロパティエクスプローラーで ForwardPathReportOutput として表示されます。

たとえば、次のように Output.Display プロパティを使用して、レポートの標準列の幅と可視性を制御できます。

myForwardpathresult.Display.Application.Width = 250 myForwardpathresult.Display.Manufacturer.Width = 100 myForwardpathresult.Display.Version.Width = 50 myForwardpathresult.Display.SourcePath.Visible = false myForwardpathresult.Display.Outcome.Width = 400

同様に、 Output.CustomField<n>.Display プロパティを使用して、カスタムフィールド列の幅と可視性を制御できます。

myForwardpathresult.CustomField1.Display.Width = 50 myForwardpathresult.CustomField2.Display.Width = 100

これらのプロパティにより制御されるのは、レポート実行時の列の表示です。 Forward Pathロジックエディターの[Output]タブの列は制御されません。

タスクスクリプトの作成

次に、シナリオスクリプトの例で作成した、[Outcome]列の「Redevelopment required」という値に関連付けるタスクスクリプトを作成します。

  1. 前の手順で作成したサンプルスクリプトをエディターに開きます。
  2. メインツールバーの[New Task Script]をクリックします。

    [Forward Path Task Script]ダイアログボックスが開きます。ここには、エディターに開いているシナリオの[Outcome]列に指定可能な値が一覧表示されます。

  3. ドロップダウンリストから[Redevelopment required]を選択し、説明を入力して[OK]をクリックします。

    新しいタスクスクリプトが作成され、エディターに開かれます。 新しいタスクスクリプトの内容は次のとおりです。

    1  ' This sample script kicks off an Install Capture of the given file 2  ' as well as interacts with the gui 3  LoadAssembly System.Windows.Forms.dll 4 5  Imports AppDNA.AppTitude.Scripting 6  Imports System.Collections.Generic 7 8  Public Class ScriptClass 9 10   Public Function Start(controller As IActionController) As TaskStatusEnum 11     ' If you need to override or provide replaceable to the  12     ' execution profiles add then to this dictionary 13         14     Dim replaceables As Dictionary(Of String, String) 15     ' replaceables.Add( "replaceablename", "value") 16 17    ' This informs the controller that it can abort if the user cancels 18     controller.AbortOnCancel() 19 20     ' This lets you run the execution profile for a given app using a given VM 21     ProductionManager.RunExecutionProfile(controller, "Snapshot",  replaceables, "Default VM Configuration") 22 23     ' Add you own actions  24     controller.GUI.ProgressPercent = 100 25     Start = TaskStatusEnum.Complete 26   End Function 27 28 End Class

    これはInstall Captureを起動する、内容が空のタスクスクリプトです。

  4. Install Captureに関連する行(行11-21)を、メールを送信するコードと置き換えます。 ただし、まず次の行を行6の後に追加して、メールの送信に必要な名前空間をインポートします。
    Imports System.Net.Mail Imports System.Net
  5. 次に、Install Captureのコード(現在の行13-23)を次のコードと置き換えます。
    ' This informs the controller that it can abort if the user cancels controller.AbortOnCancel()  Dim myClient As New SmtpClient("") myClient.Credentials = New NetworkCredential("",      "")  Dim MainMessage As String = ""  Dim Message As New MailMessage() Dim Address As New MailAddress("", "AppDNA Notification") Dim ToAddress As New MailAddress("")  MainMessage = MainMessage + "" MainMessage = MainMessage + "" MainMessage = MainMessage + "AppDNA Notification"  MainMessage = MainMessage + "" MainMessage = MainMessage + ""  MainMessage = MainMessage + "Hello," MainMessage = MainMessage + "
    " MainMessage = MainMessage + "
    " MainMessage = MainMessage + "Application needs redevelopment." MainMessage = MainMessage + "
    " MainMessage = MainMessage + "Application Name: " + controller.Application.Name MainMessage = MainMessage + "
    " MainMessage = MainMessage + "Source Path: " + controller.Application.SourcePath MainMessage = MainMessage + "
    " MainMessage = MainMessage + "Goodbye." MainMessage = MainMessage + "
    " MainMessage = MainMessage + "" MainMessage = MainMessage + "" Message.Body = MainMessage Message.IsBodyHtml = True Message.From = Address Message.To.Add(ToAddress) Message.Subject = "AppDNA Notification" myClient.Send(Message)
  6. ここで、 を環境に適した値に置き換えます。
  7. [Save]をクリックして変更を保存します。
  8. 次に、タスクスクリプトを実行します。
    1. AppDNAのサイドバーから[Reports: Applications][Forward Path]の順に選択します。
    2. Forward Pathレポートビューアーで、前の手順で作成したForward Pathシナリオを選択します。
    3. [Evaluate Tasks]をクリックします。

    [Forward Path Task Sequencing]画面が開き、Forward Pathシナリオで処理されたアプリケーションが一覧表示され、それらにタスクスクリプトが関連付けられているかどうかが示されます。

  9. タスクスクリプトが関連付けられているアプリケーションを選択し、ツールバーの[Start]をクリックします。

    これにより、そのアプリケーションに対してタスクスクリプトが実行されます。 [Status]列に、スクリプトが正常に実行されたかどうかが表示されます。 エラーが発生した場合は、画面下部に表示されます。 この例では、実際の環境に適切なメールパラメーターを入力しなければ(前の手順6.)、スクリプトが失敗します。

  • さらに例を確認するには、タスクスクリプトエクスプローラーを使用して、AppDNAに用意されているサンプルタスクスクリプトを参照します。
  • タスクスクリプトからの実行プロファイルの実行については、「実行プロファイルの実行」を参照してください。