@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
45 lines (44 loc) • 2.52 kB
TypeScript
import { ExternalTask } from '@5minds/processcube_engine_sdk';
import { InternalIdentity as Identity } from '../../Contracts/index';
import { ProxyConfiguration } from '../../Setups/EngineRouter';
import { ExternalTaskDatabaseAdapter, IamService } from '../../Tools/index';
import { CancellationToken } from '../CancellationToken';
type FetchAndLockOptions = {
workerId: string;
topics: string | Array<string>;
maxTasks: number;
lockDuration: number;
longPollingTimeoutInMs?: number;
payloadFilter?: RegExp;
};
export declare class ExternalTaskFetchAndLockService {
private readonly externalTaskAdapter;
private readonly iamService;
private readonly logger;
constructor(externalTaskDatabaseAdapter: ExternalTaskDatabaseAdapter, iamService: IamService);
dispose(): Promise<void>;
fetchAndLockExternalTasks<TPayload extends Record<string, any>>(identity: Identity, options: FetchAndLockOptions, cancellationToken?: CancellationToken): Promise<Array<ExternalTask<TPayload>>>;
extendLock(identity: Identity, workerId: string, externalTaskId: string, additionalDuration: number): Promise<void>;
updateExpirationTimeForExternalTaskIds(externalTaskIds: Array<string>, lockExpirationTime: Date): void;
clearExpirationTimeForExternalTaskIds(externalTaskIds: Array<string>): void;
private fetchOrWaitForExternalTasks;
startExternalTaskExpirationTimers(): Promise<void>;
private fetchAndLockExternalTasksSafely;
private publishExternalTaskLockedNotifications;
private lockForWorker;
private unlockExternalTasks;
private ensureExternalTaskCanBeAccessedByWorker;
private startExternalTaskExpirationTimer;
private clearExternalTaskExpirationTimer;
private onExternalTaskLockExpired;
private getLockExpirationDate;
private ensureHasClaim;
}
export interface ExternalTaskFetchAndLockServiceProxy {
fetchAndLockExternalTasks<TPayload extends Record<string, any>>(identity: Identity, options: FetchAndLockOptions, cancellationToken?: CancellationToken): Promise<Array<ExternalTask<TPayload>>>;
extendLock(identity: Identity, workerId: string, externalTaskId: string, additionalDuration: number): Promise<void>;
updateExpirationTimeForExternalTaskIds(externalTaskIds: Array<string>, lockExpirationTime: Date): Promise<void>;
clearExpirationTimeForExternalTaskIds(externalTaskIds: Array<string>): Promise<void>;
}
export declare const ExternalTaskFetchAndLockServiceProxyConfiguration: ProxyConfiguration;
export {};