Skip to content

Commit fe52ab5

Browse files
support for asyncComplete flag for http task
1 parent d361d40 commit fe52ab5

5 files changed

Lines changed: 44 additions & 1 deletion

File tree

src/common/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export interface HttpTaskDef extends CommonTaskDef {
119119
http_request: HttpInputParameters;
120120
};
121121
type: TaskType.HTTP;
122+
asyncComplete?: boolean;
122123
}
123124

124125
export interface InlineTaskInputParameters {

src/core/__test__/executor.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {MetadataClient} from "../metadataClient";
77
import {TestUtil} from "./utils/test-util";
88
import {TaskResultStatusEnum} from "../../common/open-api/models/TaskResultStatusEnum";
99
import {SignalResponse} from "../../common/open-api/models/SignalResponse";
10+
import { httpTask } from "../sdk";
11+
import { TaskClient } from "../taskClient";
1012

1113
describe("Executor", () => {
1214
const clientPromise = orkesConductorClient({ useEnvVars: true });
@@ -111,6 +113,42 @@ describe("Executor", () => {
111113
const executionDetails = await executor.getWorkflow(executionId!, true);
112114
expect(executionDetails.idempotencyKey).toEqual(idempotencyKey);
113115
});
116+
117+
test("Should run workflow with http task with asyncComplete true", async () => {
118+
const client = await clientPromise;
119+
const executor = new WorkflowExecutor(client);
120+
121+
await executor.registerWorkflow(true, {
122+
name: "test_jssdk_workflow_with_http_task_with_asyncComplete_true",
123+
version: 1,
124+
ownerEmail: "developers@orkes.io",
125+
tasks: [httpTask("test_jssdk_http_task_with_asyncComplete_true", { uri: "http://www.yahoo.com", method: "GET" }, true)],
126+
inputParameters: [],
127+
outputParameters: {},
128+
timeoutSeconds: 300,
129+
});
130+
131+
const executionId = await executor.startWorkflow({
132+
name: "test_jssdk_workflow_with_http_task_with_asyncComplete_true",
133+
input: {},
134+
version: 1,
135+
});
136+
137+
await new Promise(resolve => setTimeout(resolve, 2000));
138+
const workflowStatusBefore = await executor.getWorkflow(executionId, true);
139+
140+
expect(workflowStatusBefore.status).toEqual("RUNNING");
141+
expect(workflowStatusBefore.tasks?.[0]?.status).toEqual("IN_PROGRESS");
142+
143+
const taskClient = new TaskClient(client);
144+
taskClient.updateTaskResult(executionId, "test_jssdk_http_task_with_asyncComplete_true", "COMPLETED", { hello: "From manuall api call updating task result" });
145+
146+
await new Promise(resolve => setTimeout(resolve, 2000));
147+
const workflowStatusAfter = await executor.getWorkflow(executionId, true);
148+
149+
expect(workflowStatusAfter.status).toEqual("COMPLETED");
150+
expect(workflowStatusAfter.tasks?.[0]?.status).toEqual("COMPLETED");
151+
});
114152
});
115153

116154
describe("Execute with Return Strategy and Consistency", () => {

src/core/generators/HttpTask.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export const generateHTTPTask = (
1818
method: "GET",
1919
},
2020
},
21+
asyncComplete: false,
2122
...overrides,
2223
type: TaskType.HTTP,
2324
});

src/core/sdk/__test__/factory.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ describe("httpTask", () => {
150150
method: "GET",
151151
});
152152
expect(httpTaskObj).toEqual({
153+
asyncComplete: false,
153154
name: "httpTask",
154155
taskReferenceName: "httpTask",
155156
inputParameters: {

src/core/sdk/http.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import {
66

77
export const httpTask = (
88
taskReferenceName: string,
9-
inputParameters: HttpInputParameters
9+
inputParameters: HttpInputParameters,
10+
asyncComplete: boolean = false
1011
): HttpTaskDef => ({
1112
name: taskReferenceName,
1213
taskReferenceName,
1314
inputParameters: {
1415
http_request: inputParameters,
1516
},
17+
asyncComplete,
1618
type: TaskType.HTTP,
1719
});

0 commit comments

Comments
 (0)