QPR ProcessAnalyzer API: Difference between revisions

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 6: Line 6:


== Web API ==
== Web API ==
* [[Web_API:_Token|Token]] (login)
* [[Web_API:_Token|Token]]: Login user using username and password, and get a session token as a response.
* [[Web_API:_Signout|Sign out]]
* [[Web_API:_Signout|Sign out]]: Logs out a session.
* [[Web_API:_Analysis|Analysis]] (run query)
* [[Web_API:_Analysis|Analysis]]: Run query in the server and returns results as a response.
* [[Web_API:_Cancel|Cancel]]
* [[Web_API:_Cancel|Cancel]]: Cancels currently running operation.
* [[Web_API:_Filters|Filters]]
* [[Web_API:_Filters|Filters]]: Get all filters in system or filters in a model.


== WCF API ==
== WCF API ==

Revision as of 13:53, 16 May 2020

API's can be used to automate operations and to create integration with other applications. QPR ProcessAnalyzer has two API:

  • Web API: REST-based API used by the web UI.
  • WCF API: Older API used by the Excel Client and ScriptLauncher.

Prefer the Web API, because WCF API is a legacy API that will be removed in future.

Web API

  • Token: Login user using username and password, and get a session token as a response.
  • Sign out: Logs out a session.
  • Analysis: Run query in the server and returns results as a response.
  • Cancel: Cancels currently running operation.
  • Filters: Get all filters in system or filters in a model.

WCF API

All WCF API operations only accept HTTP POST method (HTTP GET is not allowed). WCF API can be used with wsHttp (SOAP) and webHttp endpoints.

The following methods are available in the WCF API:

WCF API Usage Examples

JavaScript Examples

//login                 
$.ajax({
  "method": "POST",
  "url": "http://localhost/qprpa/Mainservice.svc/webHttp/Authenticate",
  "dataType": "json", "contentType": "application/json; charset=utf-8",
  "data": JSON.stringify({
    'logOnName': '<username>',
    'password': '<password>',
    'parameters': ''
  })
});                       
//create user
$.ajax({
  "method": "POST",
  "url": "http://localhost/qprpa/Mainservice.svc/webHttp/SetUser",
  "dataType": "json", "contentType": "application/json; charset=utf-8",
  "data": JSON.stringify({ 
    "sessionId": sessionId,
    "user": {"Name": "user", "FullName": "first last" },
    "parameters": [{"Key": "Password", "Value": "demo"}]
  })
});
//add user to group, value 8:12:0 is user:group:member type
$.ajax({
  "method": "POST",
  "url": "http://localhost/qprpa/Mainservice.svc/webHttp/ModifyUserRelations",
  "dataType": "json", "contentType": "application/json; charset=utf-8",
  "data": JSON.stringify({ 
    "sessionId": sessionId,
    "parameters": [{"Key": "AddGroups", "Value": "8:12:0"}]
  })
});
//log off
$.ajax({
  "method": "POST",
  "url": "http://localhost/qprpa/Mainservice.svc/webHttp/LogOff",
  "dataType": "json", "contentType": "application/json; charset=utf-8",
  "data": JSON.stringify({ 
    "sessionId": sessionId
  })
});

PowerShell Examples

Move Data from QPR ProcessAnalyzer to Database using PowerShell

List Users

$paService=New-WebServiceProxy –Uri "http://localhost/qprpa/MainService.svc"
$connection=$paService.Authenticate("username", "password", @())
$token=$connection.GetValue(0).Value

$param=@()
$users=$paService.GetUsers($token, $null, $param)
$users
$paService | get-member | ? {$_.definition -match "GetAnalysis"}

Update Model Configuration

$paService=New-WebServiceProxy –Uri "http://localhost/qprpa/MainService.svc"
$connection=$paService.Authenticate("username", "password", @())
$token=$connection.GetValue(0).Value
$param=@()
$modelId=@(2)
$model=$paService.GetModels($token,$modelId, $param)

$model[0]
$model[0].ConfigurationJson = "{}"

$paService.SetModel($token,$model[0], $param)

Get Flowchart Image

$paService=New-WebServiceProxy –Uri "http://localhost/qprpa/MainService.svc" -Namespace "WebServiceProxy" -Class "PaService"
$connection=$paService.Authenticate("username", "password", @())
$token=$connection.GetValue(0).Value

$ids = new-object WebServiceProxy.ModelViewId
$ids.ViewId = 13
$ids.ViewIdSpecified = 1

$analysisType = 0
$processAnalysisType = 4
$minTransitionPercentage = 0.0

$png=  $paService.GetAnalysisImageAsByteArray($token, $ids,  $analysisType,1,  $processAnalysisType,1 , $minTransitionPercentage,1)
[IO.File]::WriteAllBytes('c:\tmp\image.png', $png)