@@ -42,6 +42,7 @@ function isValidTriggerUrl(url) {
title={textContent.pageTitles.completeWorkflow}
behindTheScenesComponent={
}
backRoute={ROUTE.TRIGGER}
+ backText={textContent.buttons.backToWorkflows}
/>
@@ -62,6 +63,7 @@ function isValidTriggerUrl(url) {
title={textContent.pageTitles.triggerWorkflow}
behindTheScenesComponent={}
backRoute={ROUTE.TRIGGER}
+ backText={textContent.buttons.backToWorkflows}
/>
diff --git a/package.json b/package.json
index 1bf91e5..730615a 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "sample-app-maestro-node",
+ "name": "sample-app-workflows-node",
"version": "1.0.0",
"private": true,
"scripts": {
diff --git a/server/constants.js b/server/constants.js
index f82a176..beece3f 100644
--- a/server/constants.js
+++ b/server/constants.js
@@ -18,10 +18,10 @@ const ISSUES = {
TRIGGER_ISSUE: 'Incompatible workflow',
};
-const MAESTRO_SCOPES = ['signature', 'aow_manage', 'impersonation'];
+const WORKFLOW_BUILDER_SCOPES = ['signature', 'aow_manage'];
module.exports = {
- scopes: MAESTRO_SCOPES,
+ scopes: WORKFLOW_BUILDER_SCOPES,
BACKEND_ROUTE,
TEMPLATE_TYPE,
METHOD,
diff --git a/server/controllers/workflowsController.js b/server/controllers/workflowsController.js
index 6e73bdb..a22f998 100644
--- a/server/controllers/workflowsController.js
+++ b/server/controllers/workflowsController.js
@@ -83,6 +83,67 @@ class WorkflowsController {
}
};
+ static pauseWorkflow = async (req, res) => {
+ try {
+ const args = {
+ workflowId: req.params.definitionId,
+ accessToken: req?.user?.accessToken || req?.session?.accessToken,
+ accountId: req.session.accountId,
+ };
+
+ const result = await WorkflowsService.pauseWorkflow(args);
+ res.status(200).send(result);
+ } catch (error) {
+ this.handleErrorResponse(error, res);
+ }
+ };
+
+ static resumePausedWorkflow = async (req, res) => {
+ try {
+ const args = {
+ workflowId: req.params.definitionId,
+ accessToken: req?.user?.accessToken || req?.session?.accessToken,
+ accountId: req.session.accountId,
+ };
+
+ const result = await WorkflowsService.resumePausedWorkflow(args);
+ res.status(200).send(result);
+ } catch (error) {
+ this.handleErrorResponse(error, res);
+ }
+ };
+
+ static getInstances = async (req, res) => {
+ try {
+ const args = {
+ workflowId: req.params.definitionId,
+ accessToken: req?.user?.accessToken || req?.session?.accessToken,
+ accountId: req.session.accountId,
+ };
+
+ const result = await WorkflowsService.getInstances(args);
+ res.status(200).send(result);
+ } catch (error) {
+ this.handleErrorResponse(error, res);
+ }
+ };
+
+ static cancelWorkflow = async (req, res) => {
+ try {
+ const args = {
+ workflowId: req.params.definitionId,
+ instanceId: req.params.instanceId,
+ accessToken: req?.user?.accessToken || req?.session?.accessToken,
+ accountId: req.session.accountId,
+ };
+
+ const result = await WorkflowsService.cancelWorkflow(args);
+ res.status(200).send(result);
+ } catch (error) {
+ this.handleErrorResponse(error, res);
+ }
+ };
+
static handleErrorResponse(error, res) {
this.logger.error(`handleErrorResponse: ${error}`);
diff --git a/server/package-lock.json b/server/package-lock.json
index 76552bf..1898e25 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -8,7 +8,7 @@
"name": "server",
"version": "1.0.0",
"dependencies": {
- "@docusign/iam-sdk": "1.0.0-beta.3",
+ "@docusign/iam-sdk": "1.0.0-beta.8",
"axios": "^1.11.0",
"body-parser": "^1.20.3",
"chalk": "^4.1.2",
@@ -64,11 +64,11 @@
"integrity": "sha512-ozRQ9CgWF4JXNNae1zUEpb2fbqH61oxtZz2sdR7a0ci5mi9pSP3EvoU7g4idZYi+CXP32gsvH7kTYZJCGW3DKQ=="
},
"node_modules/@docusign/iam-sdk": {
- "version": "1.0.0-beta.3",
- "resolved": "https://registry.npmjs.org/@docusign/iam-sdk/-/iam-sdk-1.0.0-beta.3.tgz",
- "integrity": "sha512-kK3lftOtfc+smFcmjURy9XHwhFQ1aXFj+hpRnWjLWl5juXi5/J79xILJVasJyX25T4GEvJP1946BgfpllNn9xg==",
- "peerDependencies": {
- "zod": ">= 3"
+ "version": "1.0.0-beta.8",
+ "resolved": "https://registry.npmjs.org/@docusign/iam-sdk/-/iam-sdk-1.0.0-beta.8.tgz",
+ "integrity": "sha512-amDNUFgusxqblgT3tTc4Ok6MRdfOtomWgP/GJrekUHO64VNpLaBYCPb6r4bNN+w1JmiiEpilWvJpj6mlPSztwg==",
+ "dependencies": {
+ "zod": "^3.25.0 || ^4.0.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -4979,7 +4979,6 @@
"version": "3.25.76",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/server/package.json b/server/package.json
index 2f1d206..385a9cb 100644
--- a/server/package.json
+++ b/server/package.json
@@ -11,7 +11,7 @@
},
"author": "",
"dependencies": {
- "@docusign/iam-sdk": "1.0.0-beta.3",
+ "@docusign/iam-sdk": "1.0.0-beta.8",
"axios": "^1.11.0",
"body-parser": "^1.20.3",
"chalk": "^4.1.2",
diff --git a/server/routes/workflowsRouter.js b/server/routes/workflowsRouter.js
index 080cd0a..a32635a 100644
--- a/server/routes/workflowsRouter.js
+++ b/server/routes/workflowsRouter.js
@@ -5,6 +5,10 @@ const authMiddleware = require('../middlewares/authMiddleware');
const router = Router();
router.put('/:definitionId/trigger', authMiddleware, workflowsController.triggerWorkflow);
+router.post('/:definitionId/pause', authMiddleware, workflowsController.pauseWorkflow);
+router.post('/:definitionId/resume', authMiddleware, workflowsController.resumePausedWorkflow);
+router.get('/:definitionId/instances', authMiddleware, workflowsController.getInstances);
+router.post('/:definitionId/instances/:instanceId/cancel', authMiddleware, workflowsController.cancelWorkflow);
router.get('/definitions', authMiddleware, workflowsController.getWorkflowDefinitions);
router.get('/:definitionId/requirements', authMiddleware, workflowsController.getWorkflowTriggerRequirements);
diff --git a/server/server.js b/server/server.js
index ca911d3..cdc9ad3 100644
--- a/server/server.js
+++ b/server/server.js
@@ -27,7 +27,7 @@ const app = express()
.use(
session({
secret: config.sessionSecret,
- name: 'my-maestro-session',
+ name: 'my-workflow-builder-session',
cookie: { maxAge: maxSessionAge },
saveUninitialized: true,
resave: true,
diff --git a/server/services/workflowsService.js b/server/services/workflowsService.js
index 6534e1f..747ced5 100644
--- a/server/services/workflowsService.js
+++ b/server/services/workflowsService.js
@@ -1,6 +1,6 @@
/**
* @file
- * This file handles work with docusign maestro and esign services.
+ * This file handles work with docusign workflow builder and esign services.
* Scenarios implemented:
* - Workflow definition triggering, which create workflow instance.
* - Workflow definitions fetching.
@@ -12,14 +12,14 @@ const iam = require('@docusign/iam-sdk');
class WorkflowsService {
static getWorkflowDefinitions = async args => {
const client = new iam.IamClient({ accessToken: args.accessToken });
- const definitions = await client.maestro.workflows.getWorkflowsList({ accountId: args.accountId });
+ const definitions = await client.workflowBuilder.workflows.getWorkflowsList({ accountId: args.accountId });
return definitions;
};
static getWorkflowTriggerRequirements = async args => {
const client = new iam.IamClient({ accessToken: args.accessToken });
- const triggerRequirements = await client.maestro.workflows.getWorkflowTriggerRequirements({
+ const triggerRequirements = await client.workflowBuilder.workflows.getWorkflowTriggerRequirements({
accountId: args.accountId,
workflowId: args.workflowId,
});
@@ -33,7 +33,7 @@ class WorkflowsService {
instanceName: 'test',
triggerInputs: payload,
};
- const triggerResponse = await client.maestro.workflows.triggerWorkflow({
+ const triggerResponse = await client.workflowBuilder.workflows.triggerWorkflow({
accountId: args.accountId,
workflowId: args.workflowId,
triggerWorkflow: triggerPayload,
@@ -41,6 +41,43 @@ class WorkflowsService {
return triggerResponse;
};
+
+ static pauseWorkflow = async args => {
+ const client = new iam.IamClient({ accessToken: args.accessToken });
+
+ return await client.workflowBuilder.workflows.pauseNewWorkflowInstances({
+ accountId: args.accountId,
+ workflowId: args.workflowId,
+ });
+ };
+
+ static resumePausedWorkflow = async args => {
+ const client = new iam.IamClient({ accessToken: args.accessToken });
+
+ return await client.workflowBuilder.workflows.resumePausedWorkflow({
+ accountId: args.accountId,
+ workflowId: args.workflowId,
+ });
+ };
+
+ static getInstances = async args => {
+ const client = new iam.IamClient({ accessToken: args.accessToken });
+
+ return await client.workflowBuilder.workflowInstanceManagement.getWorkflowInstancesList({
+ accountId: args.accountId,
+ workflowId: args.workflowId,
+ });
+ };
+
+ static cancelWorkflow = async args => {
+ const client = new iam.IamClient({ accessToken: args.accessToken });
+
+ return await client.workflowBuilder.workflowInstanceManagement.cancelWorkflowInstance({
+ accountId: args.accountId,
+ workflowId: args.workflowId,
+ instanceId: args.instanceId,
+ });
+ };
}
module.exports = WorkflowsService;