Workflow felfüggesztése és újraindítása

Korábban láttuk, hogy a workflow-k felfüggesztésének alapját az adja meg, hogy a workflow-k valójában háttérfolyamatként futnak, amit explicit módon is láthatunk, ha az –AsJob paraméterrel indítjuk őket. Ha pedig háttérben futó folyamatról van szó, akkor adódik a lehetőség, hogy ezeket meg is lehe állítani és újra is lehet indítani a fő PowerShell folyamat zavarása nélkül. Nézzünk erre is egy példát!

workflow Test-Checkpoint {

    $e = Get-CimInstance -ClassName CIM_DiskDrive

    $name = "WorkflowEleje-" + ([string] (get-date -Format "HHmmss"))

    $result = New-Item -Path C:\temp -ItemType directory -name $name

    Checkpoint-Workflow

    Suspend-Workflow

    $e

    $name = "WorkflowVege-" + ([string] (get-date -Format "HHmmss"))

    $result = New-Item -Path C:\temp -ItemType directory -name $name

}

Ebben a workflow-ban kiolvasok némi diszkadatot, összerakok egy fájlnevet, majd ezzel a névvel létrehozok egy könyvtárat. Biztonság kedvéért a Check-Workflow -val elmentem az aktuális állapotot, majd a Suspend-Workflow -val felfüggesztem a működést. Futtassuk ezt egy távoli gépre:

PS C:\> Test-Checkpoint -AsJob -PSComputerName AzureWin7-2

 

Id     Name            PSJobTypeName   State         HasMoreData     Location

--     ----            -------------   -----         -----------     --------

8      Job8            PSWorkflowJob   Running       True            AzureW...

Kis idő múlva természetesen már el is érjük a felfüggesztési pontot, a job állapota „Suspended” lesz:

PS C:\> Get-Job

 

Id     Name            PSJobTypeName   State         HasMoreData     Location

--     ----            -------------   -----         -----------     --------

8      Job8            PSWorkflowJob   Suspended     True            AzureW...

De természetesen, ami a felfüggesztési pontig történt, annak megvan az eredménye:

PS C:\> dir \\AzureWin7-2\c$\temp

 

 

    Directory: \\AzureWin7-2\c$\temp

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----         2/14/2015   3:38 PM            WorkflowEleje-153858

Megjegyzés

Látható, hogy a New-Item cmdletből is „igazi” tevékenység lesz a workflow-n belül, azaz a –Path paraméter a távoli gépen belüli helyi elérési útként értelmezendő.

Ugyan azt írja a job, hogy van letölthető adat, ez most nem igaz, hiszen idáig semmit sem raktunk a kimenetre, így a Receive-Job nem ad semmit sem:

PS C:\> Receive-Job -Id 8

PS C:\>

Amivel még többet tudnak a workflow-k ez egyszerű megállítás – újraindításon kívül, hogy még úgy is újraindíthatók, ha az őket futtató PowerShell folyamatot bezárom és egy másikat indítok. Ennek demonstrálására most becsukom a PowerShell alkalmazást, majd nyitok egy újat. Azaz normál esetben ilyenkor a PowerShell mindent függvényt, változót, jobot és egyebeket elfelejt, de a felfüggesztett workflow-kra emlékszik:

PS C:\> Get-Job

 

Id     Name            PSJobTypeName   State         HasMoreData     Location

--     ----            -------------   -----         -----------     --------

3      Job8            PSWorkflowJob   Suspended     True            AzureW...

Ugyan más az ID, de például a Name az ugyanaz maradt. Most ebben az új PowerShell ablakban engedem futni tovább a workflow-t a Resume-Job cmdlettel:

PS C:\> Resume-Job -Id 8

 

Id     Name            PSJobTypeName   State         HasMoreData     Location

--     ----            -------------   -----         -----------     --------

8      Job8            PSWorkflowJob   Running       True            AzureW...

 

 

PS C:\> Get-Job

 

Id     Name            PSJobTypeName   State         HasMoreData     Location

--     ----            -------------   -----         -----------     --------

8      Job8            PSWorkflowJob   Completed     True            AzureW...

 

 

PS C:\> dir \\AzureWin7-2\c$\temp

 

 

    Directory: \\AzureWin7-2\c$\temp

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----         2/14/2015   3:38 PM            WorkflowEleje-153858

d----         2/14/2015   3:59 PM            WorkflowVege-155903

 

 

PS C:\> Receive-Job -Id 8

 

DeviceID      Caption      Partitions   Size         Model        PSComputerNa

                                                                  me

--------      -------      ----------   ----         -----        ------------

\\.\PHYSIC... Virtual H... 1            136366917120 Virtual H... AzureWin7-2

\\.\PHYSIC... Virtual H... 1            42944186880  Virtual H... AzureWin7-2

Látható, hogy így is lefutott a workflow végig, és mivel csak egy WorkflowEleje könyvtárunk van, ezért biztosak lehetünk abban, hogy az eleje nem futott le mégegyszer. Ennek ellenére az elején lekérdezett diszk adatokat a végén is vissza tudta nekünk adni.



Word To HTML Converter