1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
BaseTask.php
См. документацию.
1<?php
2
4
12
13abstract class BaseTask implements Task
14{
15 protected TaskData $task;
16 protected int $userId;
17 protected int $originalUserId;
18
19 public function __construct(TaskData $task, int $userId)
20 {
21 $this->task = $task;
22 $this->userId = max($userId, 0);
23
24 $this->originalUserId = max(\CBPTaskService::getOriginalTaskUserId($task->id, $this->userId), 0);
25 }
26
27 public function getId(): int
28 {
29 return $this->task->id;
30 }
31
32 public static function add(Dto\AddTaskDto $task): ?Task
33 {
34 if (!$task->settings || empty(static::getAssociatedActivity()))
35 {
36 return null;
37 }
38
39 $taskData = [
40 'WORKFLOW_ID' => $task->workflowId,
41 'USERS' => $task->userIds,
42 'ACTIVITY' => static::getAssociatedActivity(),
43 'ACTIVITY_NAME' => $task->activityName,
44 'NAME' => $task->settings->name,
45 'DESCRIPTION' => $task->settings->description,
46 'IS_INLINE' => $task->settings->isInline ? 'Y' : 'N',
47 'DELEGATION_TYPE' => $task->settings->delegationType,
48 'PARAMETERS' => array_merge(
49 $task->settings->parameters,
50 ['DOCUMENT_ID' => $task->complexDocumentId, 'WORKFLOW_ID' => $task->workflowId]
51 ),
52 ];
53
54 $taskService = static::getTaskService();
55 $taskId = $taskService::add($taskData);
56 if (!$taskId)
57 {
58 return null;
59 }
60
61 $taskData['ID'] = $taskId;
62
63 return new static(TaskData::createFromArray($taskData), 0);
64 }
65
66 public function update(UpdateTaskDto $updateData): Result
67 {
68 $fields = [];
69
70 if ($updateData->users) // can not be empty. if empty then use delete
71 {
72 $users = $updateData->users;
73 Collection::normalizeArrayValuesByInt($users, false);
74 if ($users)
75 {
76 $fields['USERS'] = $users;
77 }
78 }
79
80 if ($updateData->parameters !== null)
81 {
82 $fields['PARAMETERS'] = $updateData->parameters;
83 }
84
85 if ($updateData->status !== null && $updateData->status > \CBPTaskStatus::Running)
86 {
87 $fields['STATUS'] = $updateData->status;
88 }
89
90 if ($fields)
91 {
92 $taskService = static::getTaskService();
93 $taskService::update($this->getId(), $fields);
94
95 return Result::createOk();
96 }
97
98 return Result::createError(new Error('empty fields'));
99 }
100
101 public function delete(DeleteTaskDto $deleteData): Result
102 {
103 $taskService = static::getTaskService();
104 $taskService::delete($this->getId());
105
106 return Result::createOk();
107 }
108
109 public function complete(CompleteTaskDto $completeData): Result
110 {
111 if ($completeData->status <= \CBPTaskStatus::Running)
112 {
113 return Result::createError(new Error('not finish status'));
114 }
115
116 return $this->update(new UpdateTaskDto(status: \CBPTaskStatus::CompleteOk));
117 }
118
119 protected static function getTaskService(): \CBPTaskService
120 {
121 static $taskService;
122 $taskService ??= \CBPRuntime::getRuntime()->getTaskService();
123
124 return $taskService;
125 }
126}
update(UpdateTaskDto $updateData)
Определения BaseTask.php:66
static add(Dto\AddTaskDto $task)
Определения BaseTask.php:32
int $originalUserId
Определения BaseTask.php:17
int $userId
Определения BaseTask.php:16
complete(CompleteTaskDto $completeData)
Определения BaseTask.php:109
TaskData $task
Определения BaseTask.php:15
__construct(TaskData $task, int $userId)
Определения BaseTask.php:19
static getTaskService()
Определения BaseTask.php:119
Определения error.php:15
Определения taskservice.php:7
static getOriginalTaskUserId($taskId, $realUserId)
Определения taskservice.php:287
const CompleteOk
Определения constants.php:261
const Running
Определения constants.php:258
Определения BaseTask.php:3
$fields
Определения yandex_run.php:501