All Downloads are FREE. Search and download functionalities are using the official Maven repository.

BPMLeaveRequestIT.api.ProcessService.ts Maven / Gradle / Ivy

The newest version!
import { Controller, Post, Put, Get, response } from "sdk/http"
import { process, tasks } from "sdk/bpm"
import { user } from "sdk/security";

@Controller
class ProcessService {

    @Post("/requests")
    public startProcess(parameters: any) {
        const processKey = 'leave-request-id';

        const processParams = {
            "requester": user.getName(),
            "toDate": parameters.toDate,
            "fromDate": parameters.fromDate
        };
        const processInstanceId = process.start(processKey, processParams);

        response.setStatus(response.ACCEPTED);
        return {
            processInstanceId: processInstanceId,
            processKey: processKey,
            parameters: processParams,
            message: `Started process instance with id [${processInstanceId}] for process with key [${processKey}]`
        };
    }

    @Put("/requests/:id/approve")
    public approveRequest(_: any, ctx: any) {
        const taskId = ctx.pathParameters.id;
        this.completeTask(taskId, true);
    }

    @Put("/requests/:id/decline")
    public declineRequest(_: any, ctx: any) {
        const taskId = ctx.pathParameters.id;
        this.completeTask(taskId, false);
    }

    private completeTask(taskId: string, approved: boolean) {
        const variables = {
            approver: user.getName(),
            requestApproved: approved
        };
        tasks.complete(taskId, variables);
    }

    @Get("/requests/:id/details")
    public getRequestDetails(_: any, ctx: any) {
        const taskId = ctx.pathParameters.id;
        return tasks.getVariables(taskId);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy