Repository navigation
Expand file tree
/
Copy pathScriptMicroserviceService.php
More file actions
45 lines (41 loc) · 1.72 KB
/
Copy pathScriptMicroserviceService.php
File metadata and controls
45 lines (41 loc) · 1.72 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
namespace ProcessMaker\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use ProcessMaker\Events\ScriptResponseEvent;
use ProcessMaker\Jobs\CompleteActivity;
use ProcessMaker\Models\Process as Definitions;
use ProcessMaker\Models\ProcessRequest;
use ProcessMaker\Models\ProcessRequestToken;
use ProcessMaker\Models\Script;
use ProcessMaker\Models\User;
class ScriptMicroserviceService
{
public function handle(Request $request)
{
$response = $request->all();
Log::debug('Response microservice executor: ' . print_r($response, true));
// If the call is from preview
if ($response['metadata']['nonce']) {
$status = $response['status'] === 'success' ? 200 : 500;
$output = $response['status'] === 'success'
? ['output' => $response['output']]
: $response;
event(new ScriptResponseEvent(
User::find($response['metadata']['user_id']),
$status,
$output,
null,
$response['metadata']['nonce']));
}
if (!empty($response['metadata']['script_task'])) {
$script = Script::find($response['metadata']['script_task']['script_id']);
$definitions = Definitions::find($response['metadata']['script_task']['definition_id']);
$instance = ProcessRequest::find($response['metadata']['script_task']['instance_id']);
$token = ProcessRequestToken::find($response['metadata']['script_task']['token_id']);
if ($response['status'] === 'success') {
CompleteActivity::dispatch($definitions, $instance, $token, $response['output'])->onQueue('bpmn');
}
}
}
}