@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
99 lines (98 loc) • 5.23 kB
TypeScript
import { OnDestroy } from '@angular/core';
import { Observable, ReplaySubject, Subject } from 'rxjs';
import { Net } from './net';
import { PetriNetResourceService } from '../resources/engine-endpoint/petri-net-resource.service';
import { LoggerService } from '../logger/services/logger.service';
import Transition from './transition';
import Transaction from './transaction';
import RolesAndPermissions from './rolesAndPermissions';
import { PetriNetReference } from '../resources/interface/petri-net-reference';
import { PetriNetReferenceWithPermissions } from './petri-net-reference-with-permissions';
import * as i0 from "@angular/core";
export interface NetCache {
[k: string]: Net;
}
/**
* Process service is responsible for loading and caching processes needed for any functionality of an app.
*/
export declare class ProcessService implements OnDestroy {
private _petriNetResource;
private _log;
protected readonly _nets: NetCache;
protected _netsSubject: Subject<NetCache>;
protected _netUpdate: Subject<Net>;
protected _requestCache: Map<string, ReplaySubject<Net>>;
protected _referenceRequestCache: Map<string, ReplaySubject<PetriNetReferenceWithPermissions>>;
readonly LATEST = "latest";
constructor(_petriNetResource: PetriNetResourceService, _log: LoggerService);
ngOnDestroy(): void;
/**
* Get process nets according to provided identifiers.
* If any of the requested processes is not cached it will be loaded from the server and saved for later.
* @param identifiers Array of identifiers of requested processes. See {@link Net}
* @param forceLoad when set to `true` cached processes will be ignored and a backend request will always be made
* (unless another is already pending)
* @returns Observable of array of loaded processes. Array is emitted only when every process finished loading.
* If any of the processes failed to load it is skipped from the result.
*/
getNets(identifiers: Array<string>, forceLoad?: boolean): Observable<Array<Net>>;
/**
* Get process net by identifier.
* @param identifier Identifier of the requested process. See {@link Net}
* @param forceLoad when set to `true` cached processes will be ignored and a backend request will always be made
* (unless another is already pending)
* @returns Observable of [the process]{@link Net}. Process is loaded from a server or picked from the cache.
*/
getNet(identifier: string, forceLoad?: boolean): Observable<Net>;
/**
* Get process net referencess according to provided identifiers.
*
* `PetriNetReferences` are not cached.
* Each call will result in a new backend request unless a request for the same net is already pending.
* @param identifiers Array of identifiers of requested processes. See {@link Net}
* @returns Observable of array of loaded processes. Array is emitted only when every process finished loading.
* If any of the processes failed to load it is skipped from the result.
*/
getNetReferences(identifiers: Array<string>): Observable<Array<PetriNetReferenceWithPermissions>>;
/**
* Get process net reference by identifier.
*
* `PetriNetReferences` are not cached.
* Each call will result in a new backend request unless a request for the same net is already pending.
* @param identifier Identifier of the requested process. See {@link Net}
* @returns Observable of [the process]{@link Net}. Process is loaded from a server or picked from the cache.
*/
getNetReference(identifier: string): Observable<PetriNetReferenceWithPermissions>;
/**
* Remove cached process by identifier. If the process is not found nothing happens.
* @param identifier Process identifier
*/
removeNet(identifier: string): void;
/**
* Update cached process object. If the process is not found nothing happens. Process object is replaced.
* @param net Updated process object.
*/
updateNet(net: Net): void;
/**
* Stream of change of the process cache.
* New state of cache is emitted every time the cached changed by inserting, updating or deleting a process.
* @returns Observable of whole updated cache.
*/
get nets$(): Observable<NetCache>;
/**
* Stream of change in the process cache.
* New state of cache is emitted every time the cached changed by inserting, updating or deleting a process.
* @returns Observable of updated or newly loaded process net.
*/
get netUpdate$(): Observable<Net>;
areNetsLoaded(identifiers: Array<string>): boolean;
isNetLoaded(identifier: string): boolean;
protected loadNet(id: string): Observable<Net>;
protected loadNetReference(id: string): Observable<PetriNetReference>;
protected loadTransitions(id: string): Observable<Array<Transition>>;
protected loadTransactions(id: string): Observable<Array<Transaction>>;
protected loadRoles(id: string): Observable<RolesAndPermissions>;
protected publishUpdate(net?: Net): void;
static ɵfac: i0.ɵɵFactoryDeclaration<ProcessService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ProcessService>;
}