Issues (2551)

src/ProcessEngineConfiguration.php (5 issues)

1
<?php
2
3
namespace Jabe;
4
5
use Doctrine\DBAL\DriverManager;
6
use Doctrine\ORM\EntityManager;
7
use Jabe\Impl\{
8
    BootstrapEngineCommand,
9
    HistoryLevelSetupCommand,
10
    SchemaOperationsProcessEngineBuild
11
};
12
use Jabe\Impl\Persistence\Entity\JobEntity;
13
use Jabe\Impl\Cfg\StandaloneProcessEngineConfiguration;
14
use Jabe\Variable\Type\ValueTypeResolverInterface;
15
use Jabe\Identity\PasswordPolicyInterface;
16
use Jabe\Runtime\DeserializationTypeValidatorInterface;
17
use Jabe\Impl\Telemetry\TelemetryRegistry;
18
19
abstract class ProcessEngineConfiguration
20
{
21
    /**
22
     * Checks the version of the DB schema against the library when
23
     * the process engine is being created and throws an exception
24
     * if the versions don't match.
25
     */
26
    public const DB_SCHEMA_UPDATE_FALSE = "false";
27
28
    /**
29
     * Creates the schema when the process engine is being created and
30
     * drops the schema when the process engine is being closed.
31
     */
32
    public const DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";
33
34
    /**
35
     * Upon building of the process engine, a check is performed and
36
     * an update of the schema is performed if it is necessary.
37
     */
38
    public const DB_SCHEMA_UPDATE_TRUE = "true";
39
40
    /**
41
     * Value for {@link #setHistory(String)} to ensure that no history is being recorded.
42
     */
43
    public const HISTORY_NONE = "none";
44
    /**
45
     * Value for {@link #setHistory(String)} to ensure that only historic process instances and
46
     * historic activity instances are being recorded.
47
     * This means no details for those entities.
48
     */
49
    public const HISTORY_ACTIVITY = "activity";
50
51
    /**
52
     * Value for {@link #setHistory(String)} to ensure that only historic process instances,
53
     * historic activity instances and submitted form property values are being recorded.
54
     */
55
    public const HISTORY_AUDIT = "audit";
56
    /**
57
     * Value for {@link #setHistory(String)} to ensure that all historic information is
58
     * being recorded, including the variable updates.
59
     */
60
    public const HISTORY_FULL = "full";
61
62
    /**
63
     * Value for {@link #setHistory(String)}. Choosing auto causes the configuration to choose the level
64
     * already present on the database. If none can be found, "audit" is taken.
65
     */
66
    public const HISTORY_AUTO = "auto";
67
68
    /**
69
     * The default history level that is used when no history level is configured
70
     */
71
    public const HISTORY_DEFAULT = self::HISTORY_AUDIT;
72
73
    /**
74
     * History cleanup is performed based on end time.
75
     */
76
    public const HISTORY_CLEANUP_STRATEGY_END_TIME_BASED = "endTimeBased";
77
78
    /**
79
     * History cleanup is performed based on removal time.
80
     */
81
    public const HISTORY_CLEANUP_STRATEGY_REMOVAL_TIME_BASED = "removalTimeBased";
82
83
    /**
84
     * Removal time for historic entities is set on execution start.
85
     */
86
    public const HISTORY_REMOVAL_TIME_STRATEGY_START = "start";
87
88
    /**
89
     * Removal time for historic entities is set if execution has been ended.
90
     */
91
    public const HISTORY_REMOVAL_TIME_STRATEGY_END = "end";
92
93
    /**
94
     * Removal time for historic entities is not set.
95
     */
96
    public const HISTORY_REMOVAL_TIME_STRATEGY_NONE = "none";
97
98
    /**
99
     * Always enables check for {@link Authorization#AUTH_TYPE_REVOKE revoke} authorizations.
100
     * This mode is equal to the &lt; 7.5 behavior.
101
     *<p />
102
    * *NOTE:* Checking revoke authorizations is very expensive for resources with a high potential
103
    * cardinality like tasks or process instances and can render authorized access to the process engine
104
    * effectively unusable on most databases. You are therefore strongly discouraged from using this mode.
105
    *
106
    */
107
    public const AUTHORIZATION_CHECK_REVOKE_ALWAYS = "always";
108
109
    /**
110
     * Never checks for {@link Authorization#AUTH_TYPE_REVOKE revoke} authorizations. This mode
111
     * has best performance effectively disables the use of Authorization#AUTH_TYPE_REVOKE.
112
     * *Note*: It is strongly recommended to use this mode.
113
     */
114
    public const AUTHORIZATION_CHECK_REVOKE_NEVER = "never";
115
116
    /**
117
     * This mode only checks for {@link Authorization#AUTH_TYPE_REVOKE revoke} authorizations if at least
118
     * one revoke authorization currently exits for the current user or one of the groups the user is a member
119
     * of. To achieve this it is checked once per command whether potentially applicable revoke authorizations
120
     * exist. Based on the outcome, the authorization check then uses revoke or not.
121
     *<p />
122
    * *NOTE:* Checking revoke authorizations is very expensive for resources with a high potential
123
    * cardinality like tasks or process instances and can render authorized access to the process engine
124
    * effectively unusable on most databases.
125
    */
126
    public const AUTHORIZATION_CHECK_REVOKE_AUTO = "auto";
127
128
    protected $processEngineName = ProcessEngines::NAME_DEFAULT;
129
    protected $idBlockSize = 100;
130
    protected $history = self::HISTORY_DEFAULT;
131
    protected $jobExecutorActivate;
132
    protected $jobExecutorDeploymentAware = false;
133
    protected $jobExecutorPreferTimerJobs = false;
134
    protected $jobExecutorAcquireByDueDate = false;
135
    protected $jobExecutorAcquireByPriority = false;
136
137
    protected $ensureJobDueDateNotNull = false;
138
    protected $producePrioritizedJobs = true;
139
    protected $producePrioritizedExternalTasks = true;
140
141
    /**
142
     * The flag will be used inside the method "JobManager#send()". It will be used to decide whether to notify the
143
     * job executor that a new job has been created. It will be used for performance improvement, so that the new job could
144
     * be executed in some situations immediately.
145
     */
146
    protected $hintJobExecutor = true;
147
148
    protected $mailServerHost;
149
    protected $mailServerUsername; // by default no name and password are provided, which
150
    protected $mailServerPassword; // means no authentication for mail server
151
    protected $mailServerPort;
152
    protected $useTLS;
153
    protected $mailServerDefaultFrom;
154
155
    protected $databaseType;
156
    protected $databaseVendor;
157
    protected $databaseVersion;
158
    protected $databaseSchemaUpdate = self::DB_SCHEMA_UPDATE_FALSE;
159
    //default Postgresql connection run inside the container
160
    protected $dbDriver;
161
    protected $dbHost;
162
    protected $dbUsername;
163
    protected $dbPassword;
164
    protected $dbName;
165
    protected $dbPort;
166
    protected $dbMaxActiveConnections;
167
    protected $dbMaxIdleConnections;
168
    protected $dbMaxCheckoutTime;
169
    protected $dbMaxWaitTime;
170
    protected $dbPingEnabled = false;
171
    protected $dbPingQuery = null;
172
    protected $dbPingConnectionNotUsedFor;
173
    protected $dataSource;
174
175
    protected $schemaOperationsCommand;
176
    protected $bootstrapCommand;
177
    protected $historyLevelCommand;
178
    protected $transactionsExternallyManaged = false;
179
    /** the number of seconds the db driver will wait for a response from the database */
180
    protected $dbStatementTimeout;
181
    protected $dbBatchProcessing = true;
182
183
    protected $persistenceUnitName;
184
    protected $entityManagerFactory;
185
    protected $handleTransaction;
186
    protected $closeEntityManager;
187
    protected $defaultNumberOfRetries = JobEntity::DEFAULT_RETRIES;
188
189
    protected $createIncidentOnFailedJobEnabled = true;
190
191
    /**
192
     * configuration of password policy
193
     */
194
    protected $enablePasswordPolicy;
195
    protected $passwordPolicy;
196
197
    /**
198
     * switch for controlling whether the process engine performs authorization checks.
199
     * The default value is false.
200
     */
201
    protected $authorizationEnabled = false;
202
203
    /**
204
     * Provides the default task permission for the user related to a task
205
     * User can be related to a task in the following ways
206
     * - Candidate user
207
     * - Part of candidate group
208
     * - Assignee
209
     * - Owner
210
     * The default value is UPDATE.
211
     */
212
    protected $defaultUserPermissionNameForTask = "UPDATE";
213
214
    /**
215
     * <p>The following flag <code>authorizationEnabledForCustomCode</code> will
216
     * only be taken into account iff <code>authorizationEnabled</code> is set
217
     * <code>true</code>.</p>
218
     *
219
     * <p>If the value of the flag <code>authorizationEnabledForCustomCode</code>
220
     * is set <code>true</code> then an authorization check will be performed by
221
     * executing commands inside custom code (e.g. inside JavaDelegate).</p>
222
     *
223
     * <p>The default value is <code>false</code>.</p>
224
     *
225
     */
226
    protected $authorizationEnabledForCustomCode = false;
227
228
    /**
229
     * If the value of this flag is set <code>true</code> then the process engine
230
     * performs tenant checks to ensure that an authenticated user can only access
231
     * data that belongs to one of his tenants.
232
     */
233
    protected $tenantCheckEnabled = true;
234
235
    protected $valueTypeResolver;
236
237
    protected $authorizationCheckRevokes = self::AUTHORIZATION_CHECK_REVOKE_AUTO;
238
239
    /**
240
     * A parameter used for defining acceptable values for the User, Group
241
     * and Tenant IDs. The pattern can be defined by using the standard
242
     * Java Regular Expression syntax should be used.
243
     *
244
     * <p>By default only alphanumeric values (or 'admin') will be accepted.</p>
245
     */
246
    protected $generalResourceWhitelistPattern =  "[a-zA-Z0-9]+|admin";
247
248
    /**
249
     * A parameter used for defining acceptable values for the User IDs.
250
     * The pattern can be defined by using the standard Java Regular
251
     * Expression syntax should be used.
252
     *
253
     * <p>If not defined, the general pattern is used. Only alphanumeric
254
     * values (or 'camunda-admin') will be accepted.</p>
255
     */
256
    protected $userResourceWhitelistPattern;
257
258
    /**
259
     * A parameter used for defining acceptable values for the Group IDs.
260
     * The pattern can be defined by using the standard Java Regular
261
     * Expression syntax should be used.
262
     *
263
     * <p>If not defined, the general pattern is used. Only alphanumeric
264
     * values (or 'camunda-admin') will be accepted.</p>
265
     */
266
    protected $groupResourceWhitelistPattern;
267
268
    /**
269
     * A parameter used for defining acceptable values for the Tenant IDs.
270
     * The pattern can be defined by using the standard Java Regular
271
     * Expression syntax should be used.
272
     *
273
     * <p>If not defined, the general pattern is used. Only alphanumeric
274
     * values (or 'camunda-admin') will be accepted.</p>
275
     */
276
    protected $tenantResourceWhitelistPattern;
277
278
    /**
279
     * If the value of this flag is set <code>true</code> then the process engine
280
     * throws ProcessEngineException when no catching boundary event was
281
     * defined for an error event.
282
     *
283
     * <p>The default value is <code>false</code>.</p>
284
     */
285
    protected $enableExceptionsAfterUnhandledBpmnError = false;
286
287
    /**
288
     * If the value of this flag is set to <code>false</code>, OptimisticLockingExceptions
289
     * are not skipped for UPDATE or DELETE operations applied to historic entities.
290
     *
291
     * <p>The default value is <code>true</code>.</p>
292
     */
293
    protected $skipHistoryOptimisticLockingExceptions = true;
294
295
    /**
296
     * If the value of this flag is set to <code>true</code>,
297
     * READ_INSTANCE_VARIABLE,
298
     * READ_HISTORY_VARIABLE, or
299
     * READ_TASK_VARIABLE on Process Definition resource, and
300
     * READ_VARIABLE on Task resource
301
     * READ_VARIABLE on Historic Task Instance resource
302
     * will be required to fetch variables when the authorizations are enabled.
303
     */
304
    protected $enforceSpecificVariablePermission = false;
305
306
    /**
307
     * Specifies which permissions will not be taken into account in the
308
     * authorizations checks if authorization is enabled.
309
     */
310
    protected $disabledPermissions = [];
311
312
    /**
313
     * If the value of this flag is set to <code>false</code> exceptions that occur
314
     * during command execution will not be logged before re-thrown. This can prevent
315
     * multiple logs of the same exception (e.g. exceptions that occur during job execution)
316
     * but can also hide valuable debugging/rootcausing information.
317
     */
318
    protected $enableCmdExceptionLogging = true;
319
320
    /**
321
     * If the value of this flag is set to <code>true</code> exceptions that occur
322
     * during the execution of a job that still has retries left will not be logged.
323
     * If the job does not have any retries left, the exception will still be logged
324
     * on logging level WARN.
325
     */
326
    protected $enableReducedJobExceptionLogging = false;
327
328
    /** Specifies which classes are allowed for deserialization */
329
    protected $deserializationAllowedClasses;
330
331
    /** Specifies which packages are allowed for deserialization */
332
    protected $deserializationAllowedPackages;
333
334
    /** Validates types before deserialization */
335
    protected $deserializationTypeValidator;
336
337
    /** Indicates whether type validation should be done before deserialization */
338
    protected $deserializationTypeValidationEnabled = false;
339
340
    /** An unique installation identifier */
341
    protected $installationId;
342
343
    protected $telemetryRegistry;
344
345
    /**
346
     * On failing activities we can skip output mapping. This might be helpful if output mapping uses variables that might not
347
     * be available on failure (e.g. with external tasks or RPA tasks).
348
     */
349
    protected $skipOutputMappingOnCanceledActivities = false;
350
351
    protected function __construct()
352
    {
353
        $this->mailServerHost = getenv('MAIL_HOST', true);
354
        $this->mailServerUsername = getenv('MAIL_USER', true); // by default no name and password are provided, which
355
        $this->mailServerPassword = getenv('MAIL_PASSWORD', true); // means no authentication for mail server
356
        $this->mailServerPort = getenv('MAIL_PORT', true);
357
        $this->useTLS = json_decode(getenv('MAIL_USE_TLS', true));
358
        $this->mailServerDefaultFrom = getenv('MAIL_USE_FROM', true);
359
360
        $this->dbDriver = getenv('DB_DRIVER', true);
361
        $this->dbHost = getenv('DB_HOST', true);
362
        $this->dbUsername = getenv('DB_USER', true);
363
        $this->dbPassword = getenv('DB_PASSWORD', true);
364
        $this->dbName = getenv('DB_NAME', true);
365
        $this->dbPort = getenv('DB_PORT', true);
366
367
        $this->schemaOperationsCommand = new SchemaOperationsProcessEngineBuild();
368
        $this->bootstrapCommand = new BootstrapEngineCommand();
369
        $this->historyLevelCommand = new HistoryLevelSetupCommand();
370
    }
371
372
    abstract public function buildProcessEngine();
373
374
    public static function createStandaloneProcessEngineConfiguration(): ProcessEngineConfiguration
375
    {
376
        return new StandaloneProcessEngineConfiguration();
377
    }
378
379
    // getters and setters //////////////////////////////////////////////////////
380
381
    public function getProcessEngineName(): string
382
    {
383
        return $this->processEngineName;
384
    }
385
386
    public function setProcessEngineName(string $processEngineName): ProcessEngineConfiguration
387
    {
388
        $this->processEngineName = $processEngineName;
389
        return $this;
390
    }
391
392
    public function getIdBlockSize(): int
393
    {
394
        return $this->idBlockSize;
395
    }
396
397
    public function setIdBlockSize(int $idBlockSize): ProcessEngineConfiguration
398
    {
399
        $this->idBlockSize = $idBlockSize;
400
        return $this;
401
    }
402
403
    public function getHistory(): string
404
    {
405
        return $this->history;
406
    }
407
408
    public function setHistory(string $history): ProcessEngineConfiguration
409
    {
410
        $this->history = $history;
411
        return $this;
412
    }
413
414
    public function getMailServerHost(): string
415
    {
416
        return $this->mailServerHost;
417
    }
418
419
    public function setMailServerHost(string $mailServerHost): ProcessEngineConfiguration
420
    {
421
        $this->mailServerHost = $mailServerHost;
422
        return $this;
423
    }
424
425
    public function getMailServerUsername(): string
426
    {
427
        return $this->mailServerUsername;
428
    }
429
430
    public function setMailServerUsername(string $mailServerUsername): ProcessEngineConfiguration
431
    {
432
        $this->mailServerUsername = $mailServerUsername;
433
        return $this;
434
    }
435
436
    public function getMailServerPassword(): string
437
    {
438
        return $this->mailServerPassword;
439
    }
440
441
    public function setMailServerPassword(string $mailServerPassword): ProcessEngineConfiguration
442
    {
443
        $this->mailServerPassword = $mailServerPassword;
444
        return $this;
445
    }
446
447
    public function getMailServerPort(): int
448
    {
449
        return $this->mailServerPort;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->mailServerPort returns the type string which is incompatible with the type-hinted return integer.
Loading history...
450
    }
451
452
    public function setMailServerPort(int $mailServerPort): ProcessEngineConfiguration
453
    {
454
        $this->mailServerPort = $mailServerPort;
455
        return $this;
456
    }
457
458
    public function getMailServerUseTLS(): bool
459
    {
460
        return $this->useTLS;
461
    }
462
463
    public function setMailServerUseTLS(bool $useTLS): ProcessEngineConfiguration
464
    {
465
        $this->useTLS = $useTLS;
466
        return $this;
467
    }
468
469
    public function getMailServerDefaultFrom(): string
470
    {
471
        return $this->mailServerDefaultFrom;
472
    }
473
474
    public function setMailServerDefaultFrom(string $mailServerDefaultFrom): ProcessEngineConfiguration
475
    {
476
        $this->mailServerDefaultFrom = $mailServerDefaultFrom;
477
        return $this;
478
    }
479
480
    public function getDatabaseType(): string
481
    {
482
        return $this->databaseType;
483
    }
484
485
    public function setDatabaseType(string $databaseType): ProcessEngineConfiguration
486
    {
487
        $this->databaseType = $databaseType;
488
        return $this;
489
    }
490
491
    public function getDatabaseVendor(): string
492
    {
493
        return $this->databaseVendor;
494
    }
495
496
    public function setDatabaseVendor(string $databaseVendor): ProcessEngineConfiguration
497
    {
498
        $this->databaseVendor = $databaseVendor;
499
        return $this;
500
    }
501
502
    public function getDatabaseVersion(): string
503
    {
504
        return $this->databaseVersion;
505
    }
506
507
    public function setDatabaseVersion(string $databaseVersion): ProcessEngineConfiguration
508
    {
509
        $this->databaseVersion = $databaseVersion;
510
        return $this;
511
    }
512
513
    public function getDatabaseSchemaUpdate(): string
514
    {
515
        return $this->databaseSchemaUpdate;
516
    }
517
518
    public function setDatabaseSchemaUpdate(string $databaseSchemaUpdate): ProcessEngineConfiguration
519
    {
520
        $this->databaseSchemaUpdate = $databaseSchemaUpdate;
521
        return $this;
522
    }
523
524
    public function getDataSource(): DriverManager
525
    {
526
        return $this->dataSource;
527
    }
528
529
    public function setDataSource(DriverManager $dataSource): ProcessEngineConfiguration
530
    {
531
        $this->dataSource = $dataSource;
532
        return $this;
533
    }
534
535
    public function getSchemaOperationsCommand(): SchemaOperationsCommand
536
    {
537
        return $this->schemaOperationsCommand;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->schemaOperationsCommand returns the type Jabe\Impl\SchemaOperationsProcessEngineBuild which is incompatible with the type-hinted return Jabe\SchemaOperationsCommand.
Loading history...
538
    }
539
540
    public function setSchemaOperationsCommand(SchemaOperationsCommand $schemaOperationsCommand): void
541
    {
542
        $this->schemaOperationsCommand = $schemaOperationsCommand;
543
    }
544
545
    public function getProcessEngineBootstrapCommand(): ProcessEngineBootstrapCommand
546
    {
547
        return $this->bootstrapCommand;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->bootstrapCommand returns the type Jabe\Impl\BootstrapEngineCommand which is incompatible with the type-hinted return Jabe\ProcessEngineBootstrapCommand.
Loading history...
548
    }
549
550
    public function setProcessEngineBootstrapCommand(ProcessEngineBootstrapCommand $bootstrapCommand): void
551
    {
552
        $this->bootstrapCommand = $bootstrapCommand;
553
    }
554
555
    public function getHistoryLevelCommand(): HistoryLevelSetupCommand
556
    {
557
        return $this->historyLevelCommand;
558
    }
559
560
    public function setHistoryLevelCommand(HistoryLevelSetupCommand $historyLevelCommand): void
561
    {
562
        $this->historyLevelCommand = $historyLevelCommand;
563
    }
564
565
    public function getDbDriver(): string
566
    {
567
        return $this->dbDriver;
568
    }
569
570
    public function setDbDriver(string $dbDriver): ProcessEngineConfiguration
571
    {
572
        $this->dbDriver = $dbDriver;
573
        return $this;
574
    }
575
576
    public function getDbHost(): string
577
    {
578
        return $this->dbHost;
579
    }
580
581
    public function setDbHost(string $dbHost): ProcessEngineConfiguration
582
    {
583
        $this->dbHost = $dbHost;
584
        return $this;
585
    }
586
587
    public function getDbUsername(): string
588
    {
589
        return $this->dbUsername;
590
    }
591
592
    public function setDbUsername(string $dbUsername): ProcessEngineConfiguration
593
    {
594
        $this->dbUsername = $dbUsername;
595
        return $this;
596
    }
597
598
    public function getDbPassword(): string
599
    {
600
        return $this->dbPassword;
601
    }
602
603
    public function setDbPassword(string $dbPassword): ProcessEngineConfiguration
604
    {
605
        $this->dbPassword = $dbPassword;
606
        return $this;
607
    }
608
609
    public function isTransactionsExternallyManaged(): bool
610
    {
611
        return $this->transactionsExternallyManaged;
612
    }
613
614
    public function setTransactionsExternallyManaged(bool $transactionsExternallyManaged): ProcessEngineConfiguration
615
    {
616
        $this->transactionsExternallyManaged = $transactionsExternallyManaged;
617
        return $this;
618
    }
619
620
    public function getDbMaxActiveConnections(): int
621
    {
622
        return $this->dbMaxActiveConnections;
623
    }
624
625
    public function setDbMaxActiveConnections(int $dbMaxActiveConnections): ProcessEngineConfiguration
626
    {
627
        $this->dbMaxActiveConnections = $dbMaxActiveConnections;
628
        return $this;
629
    }
630
631
    public function getDbMaxIdleConnections(): int
632
    {
633
        return $this->dbMaxIdleConnections;
634
    }
635
636
    public function setDbMaxIdleConnections(int $dbMaxIdleConnections): int
637
    {
638
        $this->dbMaxIdleConnections = $dbMaxIdleConnections;
639
        return $this;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this returns the type Jabe\ProcessEngineConfiguration which is incompatible with the type-hinted return integer.
Loading history...
640
    }
641
642
    public function getDbMaxCheckoutTime(): int
643
    {
644
        return $this->dbMaxCheckoutTime;
645
    }
646
647
    public function setDbMaxCheckoutTime(int $dbMaxCheckoutTime): ProcessEngineConfiguration
648
    {
649
        $this->dbMaxCheckoutTime = $dbMaxCheckoutTime;
650
        return $this;
651
    }
652
653
    public function getDbMaxWaitTime(): int
654
    {
655
        return $this->dbMaxWaitTime;
656
    }
657
658
    public function setDbMaxWaitTime(int $dbMaxWaitTime): ProcessEngineConfiguration
659
    {
660
        $this->dbMaxWaitTime = $dbMaxWaitTime;
661
        return $this;
662
    }
663
664
    public function isDbPingEnabled(): bool
665
    {
666
        return $this->dbPingEnabled;
667
    }
668
669
    public function setDbPingEnabled(bool $dbPingEnabled): ProcessEngineConfiguration
670
    {
671
        $this->dbPingEnabled = $dbPingEnabled;
672
        return $this;
673
    }
674
675
    public function getDbPingQuery(): string
676
    {
677
        return $this->dbPingQuery;
678
    }
679
680
    public function setDbPingQuery(string $dbPingQuery): ProcessEngineConfiguration
681
    {
682
        $this->dbPingQuery = $dbPingQuery;
683
        return $this;
684
    }
685
686
    public function getDbPingConnectionNotUsedFor(): int
687
    {
688
        return $this->dbPingConnectionNotUsedFor;
689
    }
690
691
    public function setDbPingConnectionNotUsedFor(int $dbPingNotUsedFor): ProcessEngineConfiguration
692
    {
693
        $this->dbPingConnectionNotUsedFor = $dbPingNotUsedFor;
694
        return $this;
695
    }
696
697
    /** Gets the number of seconds the db driver will wait for a response from the database. */
698
    public function getDbStatementTimeout(): int
699
    {
700
        return $this->dbStatementTimeout;
701
    }
702
703
    /** Sets the number of seconds the db driver will wait for a response from the database. */
704
    public function setDbStatementTimeout(int $dbStatementTimeout): ProcessEngineConfiguration
705
    {
706
        $this->dbStatementTimeout = $dbStatementTimeout;
707
        return $this;
708
    }
709
710
    public function isDbBatchProcessing(): bool
711
    {
712
        return $this->dbBatchProcessing;
713
    }
714
715
    public function setDbBatchProcessing(bool $dbBatchProcessing): ProcessEngineConfiguration
716
    {
717
        $this->dbBatchProcessing = $dbBatchProcessing;
718
        return $this;
719
    }
720
721
    public function isJobExecutorActivate(): bool
722
    {
723
        return $this->jobExecutorActivate;
724
    }
725
726
    public function setJobExecutorActivate(bool $jobExecutorActivate): ProcessEngineConfiguration
727
    {
728
        $this->jobExecutorActivate = $jobExecutorActivate;
729
        return $this;
730
    }
731
732
    public function isJobExecutorDeploymentAware(): bool
733
    {
734
        return $this->jobExecutorDeploymentAware;
735
    }
736
737
    public function setJobExecutorDeploymentAware(bool $jobExecutorDeploymentAware): ProcessEngineConfiguration
738
    {
739
        $this->jobExecutorDeploymentAware = $jobExecutorDeploymentAware;
740
        return $this;
741
    }
742
743
    public function isJobExecutorAcquireByDueDate(): bool
744
    {
745
        return $this->jobExecutorAcquireByDueDate;
746
    }
747
748
    public function setJobExecutorAcquireByDueDate(bool $jobExecutorAcquireByDueDate): ProcessEngineConfiguration
749
    {
750
        $this->jobExecutorAcquireByDueDate = $jobExecutorAcquireByDueDate;
751
        return $this;
752
    }
753
754
    public function isJobExecutorPreferTimerJobs(): bool
755
    {
756
        return $this->jobExecutorPreferTimerJobs;
757
    }
758
759
    public function setJobExecutorPreferTimerJobs(bool $jobExecutorPreferTimerJobs): ProcessEngineConfiguration
760
    {
761
        $this->jobExecutorPreferTimerJobs = $jobExecutorPreferTimerJobs;
762
        return $this;
763
    }
764
765
    public function isHintJobExecutor(): bool
766
    {
767
        return $this->hintJobExecutor;
768
    }
769
770
    public function setHintJobExecutor(bool $hintJobExecutor): ProcessEngineConfiguration
771
    {
772
        $this->hintJobExecutor = $hintJobExecutor;
773
        return $this;
774
    }
775
776
    public function getEntityManagerFactory(): EntityManager
777
    {
778
        return $this->entityManagerFactory;
779
    }
780
781
    public function setEntityManagerFactory(EntityManager $entityManagerFactory): ProcessEngineConfiguration
782
    {
783
        $this->entityManagerFactory = $entityManagerFactory;
784
        return $this;
785
    }
786
787
    public function isHandleTransaction(): bool
788
    {
789
        return $this->handleTransaction;
790
    }
791
792
    public function setHandleTransaction(bool $handleTransaction): ProcessEngineConfiguration
793
    {
794
        $this->handleTransaction = $handleTransaction;
795
        return $this;
796
    }
797
798
    public function isCloseEntityManager(): bool
799
    {
800
        return $this->closeEntityManager;
801
    }
802
803
    public function setCloseEntityManager(bool $closeEntityManager): ProcessEngineConfiguration
804
    {
805
        $this->closeEntityManager = $closeEntityManager;
806
        return $this;
807
    }
808
809
    public function getPersistenceUnitName(): string
810
    {
811
        return $this->persistenceUnitName;
812
    }
813
814
    public function setPersistenceUnitName(string $persistenceUnitName): void
815
    {
816
        $this->persistenceUnitName = $persistenceUnitName;
817
    }
818
819
    public function isCreateIncidentOnFailedJobEnabled(): bool
820
    {
821
        return $this->createIncidentOnFailedJobEnabled;
822
    }
823
824
    public function setCreateIncidentOnFailedJobEnabled(bool $createIncidentOnFailedJobEnabled): ProcessEngineConfiguration
825
    {
826
        $this->createIncidentOnFailedJobEnabled = $createIncidentOnFailedJobEnabled;
827
        return $this;
828
    }
829
830
    public function isAuthorizationEnabled(): bool
831
    {
832
        return $this->authorizationEnabled;
833
    }
834
835
    public function setAuthorizationEnabled(bool $isAuthorizationChecksEnabled): ProcessEngineConfiguration
836
    {
837
        $this->authorizationEnabled = $isAuthorizationChecksEnabled;
838
        return $this;
839
    }
840
841
    public function getDefaultUserPermissionNameForTask(): string
842
    {
843
        return $this->defaultUserPermissionNameForTask;
844
    }
845
846
    public function setDefaultUserPermissionNameForTask(string $defaultUserPermissionNameForTask): ProcessEngineConfiguration
847
    {
848
        $this->defaultUserPermissionNameForTask = $defaultUserPermissionNameForTask;
849
        return $this;
850
    }
851
852
    public function isAuthorizationEnabledForCustomCode(): bool
853
    {
854
        return $this->authorizationEnabledForCustomCode;
855
    }
856
857
    public function setAuthorizationEnabledForCustomCode(bool $authorizationEnabledForCustomCode): ProcessEngineConfiguration
858
    {
859
        $this->authorizationEnabledForCustomCode = $authorizationEnabledForCustomCode;
860
        return $this;
861
    }
862
863
    public function isTenantCheckEnabled(): bool
864
    {
865
        return $this->tenantCheckEnabled;
866
    }
867
868
    public function setTenantCheckEnabled(bool $isTenantCheckEnabled): ProcessEngineConfiguration
869
    {
870
        $this->tenantCheckEnabled = $isTenantCheckEnabled;
871
        return $this;
872
    }
873
874
    public function getGeneralResourceWhitelistPattern(): string
875
    {
876
        return $this->generalResourceWhitelistPattern;
877
    }
878
879
    public function setGeneralResourceWhitelistPattern(string $generalResourceWhitelistPattern): void
880
    {
881
        $this->generalResourceWhitelistPattern = $generalResourceWhitelistPattern;
882
    }
883
884
    public function getUserResourceWhitelistPattern(): string
885
    {
886
        return $this->userResourceWhitelistPattern;
887
    }
888
889
    public function setUserResourceWhitelistPattern(string $userResourceWhitelistPattern): void
890
    {
891
        $this->userResourceWhitelistPattern = $userResourceWhitelistPattern;
892
    }
893
894
    public function getGroupResourceWhitelistPattern(): string
895
    {
896
        return $this->groupResourceWhitelistPattern;
897
    }
898
899
    public function setGroupResourceWhitelistPattern(string $groupResourceWhitelistPattern): void
900
    {
901
        $this->groupResourceWhitelistPattern = $groupResourceWhitelistPattern;
902
    }
903
904
    public function getTenantResourceWhitelistPattern(): string
905
    {
906
        return $this->tenantResourceWhitelistPattern;
907
    }
908
909
    public function setTenantResourceWhitelistPattern(string $tenantResourceWhitelistPattern): void
910
    {
911
        $this->tenantResourceWhitelistPattern = $tenantResourceWhitelistPattern;
912
    }
913
914
    public function getDefaultNumberOfRetries(): int
915
    {
916
        return $this->defaultNumberOfRetries;
917
    }
918
919
    public function setDefaultNumberOfRetries(int $defaultNumberOfRetries): void
920
    {
921
        $this->defaultNumberOfRetries = $defaultNumberOfRetries;
922
    }
923
924
    public function getValueTypeResolver(): ValueTypeResolverInterface
925
    {
926
        return $this->valueTypeResolver;
927
    }
928
929
    public function setValueTypeResolver(ValueTypeResolverInterface $valueTypeResolver): ProcessEngineConfiguration
930
    {
931
        $this->valueTypeResolver = $valueTypeResolver;
932
        return $this;
933
    }
934
935
    public function isEnsureJobDueDateNotNull(): bool
936
    {
937
        return $this->ensureJobDueDateNotNull;
938
    }
939
940
    public function setEnsureJobDueDateNotNull(bool $ensureJobDueDateNotNull): void
941
    {
942
        $this->ensureJobDueDateNotNull = $ensureJobDueDateNotNull;
943
    }
944
945
    public function isProducePrioritizedJobs(): bool
946
    {
947
        return $this->producePrioritizedJobs;
948
    }
949
950
    public function setProducePrioritizedJobs(bool $producePrioritizedJobs): void
951
    {
952
        $this->producePrioritizedJobs = $producePrioritizedJobs;
953
    }
954
955
    public function isJobExecutorAcquireByPriority(): bool
956
    {
957
        return $this->jobExecutorAcquireByPriority;
958
    }
959
960
    public function setJobExecutorAcquireByPriority(bool $jobExecutorAcquireByPriority): void
961
    {
962
        $this->jobExecutorAcquireByPriority = $jobExecutorAcquireByPriority;
963
    }
964
965
    public function isProducePrioritizedExternalTasks(): bool
966
    {
967
        return $this->producePrioritizedExternalTasks;
968
    }
969
970
    public function setProducePrioritizedExternalTasks(bool $producePrioritizedExternalTasks): void
971
    {
972
        $this->producePrioritizedExternalTasks = $producePrioritizedExternalTasks;
973
    }
974
975
    public function setAuthorizationCheckRevokes(string $authorizationCheckRevokes): bool
976
    {
977
        $this->authorizationCheckRevokes = $authorizationCheckRevokes;
0 ignored issues
show
Bug Best Practice introduced by
In this branch, the function will implicitly return null which is incompatible with the type-hinted return boolean. Consider adding a return statement or allowing null as return value.

For hinted functions/methods where all return statements with the correct type are only reachable via conditions, ?null? gets implicitly returned which may be incompatible with the hinted type. Let?s take a look at an example:

interface ReturnsInt {
    public function returnsIntHinted(): int;
}

class MyClass implements ReturnsInt {
    public function returnsIntHinted(): int
    {
        if (foo()) {
            return 123;
        }
        // here: null is implicitly returned
    }
}
Loading history...
978
    }
979
980
    public function getAuthorizationCheckRevokes(): string
981
    {
982
        return $this->authorizationCheckRevokes;
983
    }
984
985
    public function isEnableExceptionsAfterUnhandledBpmnError(): bool
986
    {
987
        return $this->enableExceptionsAfterUnhandledBpmnError;
988
    }
989
990
    public function setEnableExceptionsAfterUnhandledBpmnError(bool $enableExceptionsAfterUnhandledBpmnError): void
991
    {
992
        $this->enableExceptionsAfterUnhandledBpmnError = $enableExceptionsAfterUnhandledBpmnError;
993
    }
994
995
    public function isSkipHistoryOptimisticLockingExceptions(): bool
996
    {
997
        return $this->skipHistoryOptimisticLockingExceptions;
998
    }
999
1000
    public function setSkipHistoryOptimisticLockingExceptions(bool $skipHistoryOptimisticLockingExceptions): ProcessEngineConfiguration
1001
    {
1002
        $this->skipHistoryOptimisticLockingExceptions = $skipHistoryOptimisticLockingExceptions;
1003
        return $this;
1004
    }
1005
1006
    public function isEnforceSpecificVariablePermission(): bool
1007
    {
1008
        return $this->enforceSpecificVariablePermission;
1009
    }
1010
1011
    public function setEnforceSpecificVariablePermission(bool $ensureSpecificVariablePermission): void
1012
    {
1013
        $this->enforceSpecificVariablePermission = $ensureSpecificVariablePermission;
1014
    }
1015
1016
    public function getDisabledPermissions(): array
1017
    {
1018
        return $this->disabledPermissions;
1019
    }
1020
1021
    public function setDisabledPermissions(array $disabledPermissions): void
1022
    {
1023
        $this->disabledPermissions = $disabledPermissions;
1024
    }
1025
1026
    public function isEnablePasswordPolicy(): bool
1027
    {
1028
        return $this->enablePasswordPolicy;
1029
    }
1030
1031
    public function setEnablePasswordPolicy(bool $enablePasswordPolicy): ProcessEngineConfiguration
1032
    {
1033
        $this->enablePasswordPolicy = $enablePasswordPolicy;
1034
        return $this;
1035
    }
1036
1037
    public function getPasswordPolicy(): PasswordPolicyInterface
1038
    {
1039
        return $this->passwordPolicy;
1040
    }
1041
1042
    public function setPasswordPolicy(PasswordPolicyInterface $passwordPolicy): ProcessEngineConfiguration
1043
    {
1044
        $this->passwordPolicy = $passwordPolicy;
1045
        return $this;
1046
    }
1047
1048
    public function isEnableCmdExceptionLogging(): bool
1049
    {
1050
        return $this->enableCmdExceptionLogging;
1051
    }
1052
1053
    public function setEnableCmdExceptionLogging(bool $enableCmdExceptionLogging): ProcessEngineConfiguration
1054
    {
1055
        $this->enableCmdExceptionLogging = $enableCmdExceptionLogging;
1056
        return $this;
1057
    }
1058
1059
    public function isEnableReducedJobExceptionLogging(): bool
1060
    {
1061
        return $this->enableReducedJobExceptionLogging;
1062
    }
1063
1064
    public function setEnableReducedJobExceptionLogging(bool $enableReducedJobExceptionLogging): ProcessEngineConfiguration
1065
    {
1066
        $this->enableReducedJobExceptionLogging = $enableReducedJobExceptionLogging;
1067
        return $this;
1068
    }
1069
1070
    public function getDeserializationAllowedClasses(): string
1071
    {
1072
        return $this->deserializationAllowedClasses;
1073
    }
1074
1075
    public function setDeserializationAllowedClasses(string $deserializationAllowedClasses): ProcessEngineConfiguration
1076
    {
1077
        $this->deserializationAllowedClasses = $deserializationAllowedClasses;
1078
        return $this;
1079
    }
1080
1081
    public function getDeserializationAllowedPackages(): string
1082
    {
1083
        return $this->deserializationAllowedPackages;
1084
    }
1085
1086
    public function setDeserializationAllowedPackages(string $deserializationAllowedPackages): ProcessEngineConfiguration
1087
    {
1088
        $this->deserializationAllowedPackages = $deserializationAllowedPackages;
1089
        return $this;
1090
    }
1091
1092
    public function getDeserializationTypeValidator(): DeserializationTypeValidatorInterface
1093
    {
1094
        return $this->deserializationTypeValidator;
1095
    }
1096
1097
    public function setDeserializationTypeValidator(DeserializationTypeValidatorInterface $deserializationTypeValidator): ProcessEngineConfiguration
1098
    {
1099
        $this->deserializationTypeValidator = $deserializationTypeValidator;
1100
        return $this;
1101
    }
1102
1103
    public function isDeserializationTypeValidationEnabled(): bool
1104
    {
1105
        return $this->deserializationTypeValidationEnabled;
1106
    }
1107
1108
    public function setDeserializationTypeValidationEnabled(bool $deserializationTypeValidationEnabled): ProcessEngineConfiguration
1109
    {
1110
        $this->deserializationTypeValidationEnabled = $deserializationTypeValidationEnabled;
1111
        return $this;
1112
    }
1113
1114
    public function getInstallationId(): string
1115
    {
1116
        return $this->installationId;
1117
    }
1118
1119
    public function setInstallationId(string $installationId): ProcessEngineConfiguration
1120
    {
1121
        $this->installationId = $installationId;
1122
        return $this;
1123
    }
1124
1125
    public function getTelemetryRegistry(): ?TelemetryRegistry
1126
    {
1127
        return $this->telemetryRegistry;
1128
    }
1129
1130
    public function setTelemetryRegistry(TelemetryRegistry $telemetryRegistry): ProcessEngineConfiguration
1131
    {
1132
        $this->telemetryRegistry = $telemetryRegistry;
1133
        return $this;
1134
    }
1135
1136
    public function isSkipOutputMappingOnCanceledActivities(): bool
1137
    {
1138
        return $this->skipOutputMappingOnCanceledActivities;
1139
    }
1140
1141
    public function setSkipOutputMappingOnCanceledActivities(bool $skipOutputMappingOnCanceledActivities): void
1142
    {
1143
        $this->skipOutputMappingOnCanceledActivities = $skipOutputMappingOnCanceledActivities;
1144
    }
1145
}
1146