Skip to content

Introduction

Easit ProcessRunner, or EPR for short, makes it possible to integrate Easit GO with your existing PowerShell scripts. EPR consist of a java application running in an instance of Apache Tomcat, installed as a Windows service.

Once started, EPR listens for incoming request using a REST service. When a request is received, the JSON body of the request is passed on as a argument to a script file with the same name as the value of "importHandlerIdentifier" in the body. We also send a base64 representation of the JSON body via stdin.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    {
        "importHandlerIdentifier":"testService.ps1",
        "itemToImport":[
            {
                "property":[
                    {
                        "content":"123456",
                        "name":"requestId",
                        "rawValue":null
                    },{
                        "content":"aValue",
                        "name":"aProperty",
                        "rawValue":null
                    }
                ],
                "attachment":[],
                "id":"123456:2",
                "uid":"123456"
            }
        ],
        "genericRequestProperty":[
            {
                "content":"testService.ps1",
                "name":"identifier"
            },{
                "content":"MC0CFHnd2e81XFZezdFIHPj5i+A/6dbPAhUAkUKMTyjRZtJ7SZ6c/3KL0aeZKd4=",
                "name":"initializedByXmlExport"
            }
        ]
    }

To put in to context, the command executed by the java application, with the example above would be as shows below.

1
    C:\Users\administrator> pwsh.exe -File "Path/To/Scripts/scriptName.ps1 requestJsonBody"

To further exemplify this, our script scriptName.ps1 looks like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,Position=0)]
        [string]$StringInput,
        [Parameter(Mandatory,Position=1)]
        [string]$Base64StringFromStdIn
    )
    $easitGOItem = Convert-EasitGOExportString -InputString $Base64StringFromStdIn
    # Write message and object to console
    "Received exported item $($easitGOItem.uid)"
    $easitGOItem

and will produce this output:

1
2
3
4
5
    Received exported item 123456

    requestId aProperty
    --------- --------
    123456    aValue

OR (before version 1.1.0 of Easit ProcessRunner)

This will be deprecated in the future, please use the approach above. In a future release of ProcessRunner we will move to only sending input to the script via the stdin stream.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,Position=0)]
        [string]$StringInput
    )
    # Requires version 1.2.0 of Easit.ProcessRunner.GlobalFunctions
    $easitGOItem = Convert-EasitGOExportString -InputString $Base64StringFromStdIn -Raw
    Write-Host "Received exported item $($easitGOItem.uid)"
    # To access the properties..
    foreach ($property in $easitGOItem.property) {
        Write-Host "$($property.Name) = $($property.Content) (rawValue: $($property.rawValue))"
    }
    # Access a specific property
    $easitGOItem.property | Where-Object {$_.Name -like "requestId"}

and will produce this output:

1
2
3
4
5
6
7
    Received exported item 123456
    requestId = 123456
    aProperty = aValue

    content name      rawValue
    ------- ----      --------
    123456  requestId

Once the script have completed, EPR will evaluate LASTEXITCODE. If LASTEXITCODE is anything else than 0 the java application will treat it as an error or failure.