RestAPI说明
# TaskRunner RestAPI说明
以下对 TaskRunner 使用的 RestAPI 进行说明。
# 1. 执行Cmd
- 请求地址:
http(s)://${host}:${port}/?restapi=script&syntaxtype=cmd
在请求体的地址中,syntaxtype
的参数为 cmd
时,将文本或文件中的文本以 cmd
的方式进行处理。
请求体格式:text/plain
请求体:批处理文本的内容。
请求示例:
echo
:结束进程
taskkill /im TARS.exe /f
:等待1秒
ping 127.0.0.1 -n 1
start "" "C:\Program Files\IsoFace\TARS\TARS.exe"
echo
2
3
4
5
6
7
- 返回示例:如果返回的示例中包含
{"status": "ok","message": "执行耗时 xx 毫秒"}
,则批处理语句已执行在目标主机上。
# 2. 执行PowerShell
- 请求地址:
http(s)://${host}:${port}/?restapi=script&syntaxtype=powershell
在请求体的地址中,syntaxtype
的参数为 powershell
时,将文本或文件中的文本以 powershell
的方式进行处理。
请求体格式:text/plain
请求体:批处理文本的内容。
请求示例:
# 指定目录位置
$directory = "E:\setup"
# 指定文件名
$filename = "test.txt"
# 指定文件内容
$content = "hello world"
# 创建完整的文件路径
$filePath = Join-Path -Path $directory -ChildPath $filename
# 创建目录(如果不存在)
if (-not (Test-Path -Path $directory)) {
New-Item -ItemType Directory -Path $directory
}
# 创建并写入文件内容
Set-Content -Path $filePath -Value $content
# 输出文件创建成功消息
Write-Output "file created:$filePath"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 返回示例:如果返回的示例中包含
{"status": "ok","message": "执行耗时 xx 毫秒"}
,则批处理语句已执行在目标主机上。
# 3. 获取表达式的值
- 请求地址:
http(s)://${host}:${port}/?restapi=script&evaluate=${param_name}&responsecontenttype=${content_type}&syntaxtype={syntaxtype}
其中${param_name}
为要获取的变量的名称。responsecontenttype=${content_type}
部分用于填写预期返回的值的内容类型,此参数不是必选项,在不填写时默认使用 text/plain
。{syntaxtype}
中设置输入的表达式的语法类型,可选 jscript
、pascalscript
。
请求体格式:text/plain
请求体:JScript、PascalScript的程序内容。
请求示例:
var s;
{
s = "Hello, TaskRunner!";
var ss="TaskRunner!";
}
2
3
4
5
注意
请不要在非调试阶段的程序中使用消息弹出语句(比如ShowMessage()
),否则会导致发出的Rest请求无法得到响应。
- 返回示例:返回的示例为
ss
的取值TaskRunner
,content-type 为默认使用的类型text/plain
。
# 4. 执行自定批处理程序
- 请求地址:
http://${host}:${port}/?restapi=script&taskname=${batch_file_name}
通过执行自定程序列表中的批处理自定程序实现运行。${batch_file_name}
为指定的批处理自定程序的名称。
# 5. 执行自定程序
- 请求地址:
http(s)://${host}:${port}/?restapi=script&taskname=${filename}&evaluate=${param_name}&responsecontenttype=${content_type}
通过执行自定程序列表中的 JScript
、PascalScript
的自定程序实现程序运行。其中${filename}
为要获取的JScript
、PascalScript
自定程序名称。${param_name}
为要获取的变量的名称。responsecontenttype=${content_type}
部分用于填写预期返回的值的内容类型,此参数不是必选项,在不填写时默认使用 text/plain
。编写的程序中不要带有消息弹出框类型的语句(比如ShowMessage()
),否则会导致发出的Rest请求无法得到响应。
# 6. 执行工作流
- 请求地址:
http(s)://${host}:${port}/?restapi=workflow
请求方法:POST
请求体:
Body:
{
"name": "BPM001",
"params": [
{
"name": "Var1",
"value": "123"
}
]
}
2
3
4
5
6
7
8
9
10
请求体中的参数说明如下:
- name:要执行的工作流的名称。
- params:执行的工作流的参数信息。如果执行的工作流不需要通过呼叫的方式引用参数,则此项可不设置。如果使用了此项,则引入的参数值必须先在工作流的变量中定义好。
# 7. 执行自定RestAPI
在RestAPI中设置了接口相关的信息后,可以通过以下方式来执行自定RestAPI。
- 请求地址:
http(s)://${host}:${port}/?restapi={restapi_name}&token={token}¶m1={param1}...
其中 {restapi_name}
为设置的接口名称。{token}
为令牌。如未设置令牌,此项可不填写。 {param1}
等为根据需要设定的参数,在RestAPI接口中可获取。
# 7.1. 参数获取
TaskRunner包含UgParams
对象,该对象存储了接收到的请求使用的参数,按照请求参数的排序生成对应的数组。也可以直接引用参数的名称获取对应参数的取值。
//JScript
//获取的参数在URLParams中,以index方式获取,从0开始
String = UgParams.ValueFromIndex[i];
//以参数名为依据获取
String = UgParams.Values["ParamsName"];
2
3
4
5
6
# 7.2. 流获取
当使用Post方法进行RestAPI调用时,获取到的Body流信息会存储在PostStream
中,比如一些JSON信息,供函数处理调用。以下是将流中的数据转换为文本的方法,转换后的文本在 s
变量中,可供处理使用。
//JScript
function RestAPI()
{
var Stream,s;
Stream = new TStringStream("",UTF8Encoding);
try{
Stream.LoadFromStream(PostStream);
s = Stream.DataString;
Result = s;
}
finally{
Stream.Free;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# 7.3. 引用数据库设置
如需连接数据库,或引用SQL预设资料中的信息,需在数据库设置中提前设置好连接信息 FastERP
,并且在SQL预设资料中设定配置 SQL002
,在RestAPI设置中可使用以下方式连接:
function RestAPI()
{
var DB,D,V,O;
D = new TFDQuery(nil);
//使用数据库设置的连接
DB = UGMM.GetDBConnection("FastERP");
D.Connection = DB;
//使用预设SQL
D.SQL.Text = UGMM.GetSQL("SQL002");
D.Open;
//数据集转换
V = TFDQuery(D).ToJSONArray;
O = new TJSONObject();
O.AddPair("status","ok");
O.AddPair("message","success");
O.AddPair("records",TJSONNumber.Create(D.RecordCount));
O.AddPair("data",V);
return(O.ToString);
D.Free;
DB.Free;
V.Free;
O.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 8. 获取打印机列表
- 请求地址:
http(s)://${host}:${port}/?restapi=getprinterlist
获取打印机列表信息,此功能用于配合自定报表功能使用,用于指定自定报表打印时使用的打印机。获取的示例格式如下:
{"status":"ok",
"data":[
{"name":"\u5BFC\u51FA\u4E3AWPS PDF"},
{"name":"OneNote for Windows 10"},
{"name":"Microsoft XPS Document Writer"},
{"name":"Microsoft Print to PDF"},
{"name":"Fax"}
]}
2
3
4
5
6
7
8
# 9. 运行Python任务
- 请求地址:
http(s)://${host}:${port}/?restapi=pythonscript&pyid={pyid}&varname={varname}&varvalue={varvalue}
其中 {pyid}
为预设资料(资料类型为python
)的编号。{varname}
为python输入变量的名称。{varvalue}
为python输入变量的的取值。
这个接口的作用是从预设资料的Python脚本中创建运行任务,排入运行队列中,当排入至运行队列后,会返回提示信息,运行队列中的任务会按照请求的先后顺序依次进行执行。