This is an automated email from the ASF dual-hosted git repository.
paulovmr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new 9c1f321ecdd kie-issues#1173: Retrieve workflow definitions from data
index instead of openapi.json (#2302)
9c1f321ecdd is described below
commit 9c1f321ecdd6fd562e190cf8e870728a62420a9b
Author: Paulo Martins <[email protected]>
AuthorDate: Tue May 28 12:24:09 2024 -0300
kie-issues#1173: Retrieve workflow definitions from data index instead of
openapi.json (#2302)
Co-authored-by: Guilherme Caponetto
<[email protected]>
---
.../components/validateCloudEventRequest.test.ts | 4 ++
.../api/CloudEventFormEnvelopeApi.ts | 1 +
.../embedded/EmbeddedCloudEventForm.tsx | 3 +
.../envelope/CloudEventFormEnvelopeView.tsx | 9 ++-
.../components/CloudEventForm/CloudEventForm.tsx | 3 +
.../api/WorkflowDefinitionListChannelApi.ts | 2 +-
.../api/WorkflowDefinitionListDriver.ts | 2 +-
.../WorkflowDefinitionListChannelApiImpl.ts | 4 +-
.../WorkflowDefinitionListEnvelopeViewDriver.ts | 4 +-
.../WorkflowDefinitionList.tsx | 15 ++--
.../utils/WorkflowDefinitionListUtils.tsx | 24 +++++--
.../src/__tests__/apis/apis.test.tsx | 26 +++----
.../src/gatewayApi/apis.tsx | 79 +++++++++++-----------
.../src/graphql/types.tsx | 10 +++
.../runtime-tools-swf-gateway-api/src/types.ts | 2 +
.../src/CloudEventForm/CloudEventForm.tsx | 3 +
.../CloudEventFormContextProvider.tsx | 11 +--
.../src/CloudEventForm/CloudEventFormGatewayApi.ts | 6 +-
.../CloudEventFormContainer.tsx | 11 ++-
.../WorkflowDefinitionListContextProvider.tsx | 50 ++++++++++++--
.../WorkflowDefinitionListGatewayApi.ts | 22 +++---
.../WorkflowDefinitionListQueries.ts} | 25 ++++---
.../src/WorkflowDefinitionList/index.ts | 2 +-
.../WorkflowDefinitionListContainer.tsx | 12 +++-
.../WorkflowForm/WorkflowFormContextProvider.tsx | 10 ++-
.../src/WorkflowForm/WorkflowFormGatewayApi.ts | 10 ++-
.../WorkflowFormContainer.tsx | 5 +-
.../WorkflowListContainer.tsx | 7 +-
.../src/homepage/routes/HomePageRoutes.tsx | 11 +--
.../src/homepage/uiNav/HomePageNav.tsx | 10 +--
.../src/navigation/Routes.ts | 11 +--
.../WebToolsCloudEventFormContextProvider.tsx | 7 +-
...bToolsWorkflowDefinitionListContextProvider.tsx | 7 +-
.../WebToolsWorkflowFormContextProvider.tsx | 5 +-
.../pages/RuntimeToolsTriggerCloudEvent.tsx | 6 ++
.../pages/RuntimeToolsWorkflowDefinitions.tsx | 26 ++++++-
.../pages/RuntimeToolsWorkflowInstances.tsx | 12 +---
.../settings/runtimeTools/RuntimeToolsConfig.tsx | 15 +---
.../settings/runtimeTools/RuntimeToolsSettings.tsx | 61 ++---------------
.../components/DevUI/DevUILayout/DevUILayout.tsx | 10 +--
.../CloudEventFormPage/CloudEventFormPage.tsx | 11 ++-
.../pages/WorkflowFormPage/WorkflowFormPage.tsx | 2 +-
.../pages/WorkflowsPage/WorkflowsPage.tsx | 18 +++++
.../src/pages/Workflows/CloudEventFormPage.tsx | 6 +-
.../src/pages/Workflows/WorkflowFormPage.tsx | 1 +
45 files changed, 327 insertions(+), 254 deletions(-)
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/__tests__/components/validateCloudEventRequest.test.ts
b/packages/runtime-tools-swf-enveloped-components/src/__tests__/components/validateCloudEventRequest.test.ts
index 6b49ec3e662..a7e46d3ddad 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/__tests__/components/validateCloudEventRequest.test.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/__tests__/components/validateCloudEventRequest.test.ts
@@ -31,6 +31,7 @@ describe("validateCloudEventRequest tests", () => {
source: "any",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
});
expect(validation.isValid()).toBeTruthy();
@@ -46,6 +47,7 @@ describe("validateCloudEventRequest tests", () => {
source: "any",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
});
expect(validation.isValid()).toBeFalsy();
@@ -64,6 +66,7 @@ describe("validateCloudEventRequest tests", () => {
source: "any",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
});
expect(validation.isValid()).toBeFalsy();
@@ -82,6 +85,7 @@ describe("validateCloudEventRequest tests", () => {
source: "any",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
};
let validation = validateCloudEventRequest(eventRequest);
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/api/CloudEventFormEnvelopeApi.ts
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/api/CloudEventFormEnvelopeApi.ts
index 58bfc4decff..0bedb872dc3 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/api/CloudEventFormEnvelopeApi.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/api/CloudEventFormEnvelopeApi.ts
@@ -34,4 +34,5 @@ export type CloudEventFormDefaultValues = {
export type CloudEventFormInitArgs = {
isNewInstanceEvent: boolean;
defaultValues?: CloudEventFormDefaultValues;
+ serviceUrl: string;
};
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/embedded/EmbeddedCloudEventForm.tsx
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/embedded/EmbeddedCloudEventForm.tsx
index 984baae166e..48d2d35aaff 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/embedded/EmbeddedCloudEventForm.tsx
+++
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/embedded/EmbeddedCloudEventForm.tsx
@@ -32,7 +32,9 @@ export interface EmbeddedCloudEventFormProps {
defaultValues?: {
cloudEventSource?: string;
instanceId?: string;
+ definitionName?: string;
};
+ serviceUrl: string;
}
export const EmbeddedCloudEventForm = React.forwardRef(
@@ -66,6 +68,7 @@ export const EmbeddedCloudEventForm = React.forwardRef(
{
isNewInstanceEvent: props.isNewInstanceEvent ?? true,
defaultValues: props.defaultValues,
+ serviceUrl: props.serviceUrl,
}
);
},
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/CloudEventFormEnvelopeView.tsx
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/CloudEventFormEnvelopeView.tsx
index 60d00780e27..67e9fb9f9fe 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/CloudEventFormEnvelopeView.tsx
+++
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/CloudEventFormEnvelopeView.tsx
@@ -41,6 +41,7 @@ export const CloudEventFormEnvelopeView =
React.forwardRef<CloudEventFormEnvelop
const [isEnvelopeConnectedToChannel, setEnvelopeConnectedToChannel] =
useState<boolean>(false);
const [isNewInstanceEvent, setIsNewInstanceEvent] =
useState<boolean>(false);
const [defaultValues, setDefaultValues] =
useState<CloudEventFormDefaultValues>();
+ const [serviceUrl, setServiceUrl] = useState<string>("");
useImperativeHandle(
forwardedRef,
@@ -49,6 +50,7 @@ export const CloudEventFormEnvelopeView =
React.forwardRef<CloudEventFormEnvelop
setEnvelopeConnectedToChannel(true);
setIsNewInstanceEvent(args.isNewInstanceEvent);
setDefaultValues(args.defaultValues);
+ setServiceUrl(args.serviceUrl);
},
}),
[]
@@ -78,7 +80,12 @@ export const CloudEventFormEnvelopeView =
React.forwardRef<CloudEventFormEnvelop
return (
<Card>
<CardBody>
- <CloudEventForm driver={driver}
isNewInstanceEvent={isNewInstanceEvent} defaultValues={defaultValues} />
+ <CloudEventForm
+ driver={driver}
+ serviceUrl={serviceUrl}
+ isNewInstanceEvent={isNewInstanceEvent}
+ defaultValues={defaultValues}
+ />
</CardBody>
</Card>
);
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/components/CloudEventForm/CloudEventForm.tsx
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/components/CloudEventForm/CloudEventForm.tsx
index c9605d23651..51cd7ef41bf 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/components/CloudEventForm/CloudEventForm.tsx
+++
b/packages/runtime-tools-swf-enveloped-components/src/cloudEventForm/envelope/components/CloudEventForm/CloudEventForm.tsx
@@ -47,12 +47,14 @@ import {
export interface CloudEventFormProps {
driver: CloudEventFormDriver;
+ serviceUrl: string;
isNewInstanceEvent?: boolean;
defaultValues?: CloudEventFormDefaultValues;
}
export const CloudEventForm: React.FC<CloudEventFormProps & OUIAProps> = ({
driver,
+ serviceUrl,
isNewInstanceEvent,
defaultValues,
ouiaId,
@@ -124,6 +126,7 @@ export const CloudEventForm: React.FC<CloudEventFormProps &
OUIAProps> = ({
source: eventSource,
extensions,
},
+ serviceUrl: serviceUrl,
};
const validations = validateCloudEventRequest(eventRequest);
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
index d81dbc3052f..9369b45af55 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
@@ -27,5 +27,5 @@ export interface WorkflowDefinitionListChannelApi {
workflowDefinitionList__setWorkflowDefinitionFilter(filter: string[]):
Promise<void>;
workflowDefinitionList__getWorkflowDefinitionFilter(): Promise<string[]>;
workflowDefinitionList__openWorkflowForm(workflowDefinition:
WorkflowDefinition): Promise<void>;
- workflowDefinitionsList__openTriggerCloudEvent(): void;
+ workflowDefinitionsList__openTriggerCloudEvent(workflowDefinition:
WorkflowDefinition): Promise<void>;
}
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListDriver.ts
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListDriver.ts
index 4d2867a7a00..85ca1992e9e 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListDriver.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListDriver.ts
@@ -27,5 +27,5 @@ export interface WorkflowDefinitionListDriver {
setWorkflowDefinitionFilter(filter: string[]): Promise<void>;
getWorkflowDefinitionFilter(): Promise<string[]>;
openWorkflowForm(workflowDefinition: WorkflowDefinition): Promise<void>;
- openTriggerCloudEvent(): void;
+ openTriggerCloudEvent(workflowDefinition: WorkflowDefinition): Promise<void>;
}
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/embedded/WorkflowDefinitionListChannelApiImpl.ts
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/embedded/WorkflowDefinitionListChannelApiImpl.ts
index 8b8f3e29c24..9dac2cda48b 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/embedded/WorkflowDefinitionListChannelApiImpl.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/embedded/WorkflowDefinitionListChannelApiImpl.ts
@@ -40,7 +40,7 @@ export class WorkflowDefinitionListChannelApiImpl implements
WorkflowDefinitionL
return this.driver.getWorkflowDefinitionsQuery();
}
- workflowDefinitionsList__openTriggerCloudEvent(): void {
- this.driver.openTriggerCloudEvent();
+ workflowDefinitionsList__openTriggerCloudEvent(workflowDefinition:
WorkflowDefinition): Promise<void> {
+ return this.driver.openTriggerCloudEvent(workflowDefinition);
}
}
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/WorkflowDefinitionListEnvelopeViewDriver.ts
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/WorkflowDefinitionListEnvelopeViewDriver.ts
index ce65b709271..24de942e16b 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/WorkflowDefinitionListEnvelopeViewDriver.ts
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/WorkflowDefinitionListEnvelopeViewDriver.ts
@@ -40,7 +40,7 @@ export default class WorkflowDefinitionListEnvelopeViewDriver
implements Workflo
return
this.channelApi.requests.workflowDefinitionList__getWorkflowDefinitionsQuery();
}
- openTriggerCloudEvent(): void {
-
this.channelApi.notifications.workflowDefinitionsList__openTriggerCloudEvent.send();
+ openTriggerCloudEvent(workflowDefinition: WorkflowDefinition): Promise<void>
{
+ return
this.channelApi.requests.workflowDefinitionsList__openTriggerCloudEvent(workflowDefinition);
}
}
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/WorkflowDefinitionList/WorkflowDefinitionList.tsx
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/WorkflowDefinitionList/WorkflowDefinitionList.tsx
index 20f1abb27ac..3daf331a1bd 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/WorkflowDefinitionList/WorkflowDefinitionList.tsx
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/WorkflowDefinitionList/WorkflowDefinitionList.tsx
@@ -70,19 +70,20 @@ const WorkflowDefinitionList:
React.FC<WorkflowDefinitionListProps & OUIAProps>
const columns: DataTableColumn[] = [
getColumn("workflowName", `Workflow Name`),
getColumn("endpoint", "Endpoint"),
- getActionColumn((workflowDefinition) => {
- driver.openWorkflowForm(workflowDefinition);
- }),
+ getActionColumn(
+ (workflowDefinition) => {
+ driver.openWorkflowForm(workflowDefinition);
+ },
+ (workflowDefinition) => {
+ driver.openTriggerCloudEvent(workflowDefinition);
+ }
+ ),
];
const applyFilter = async (): Promise<void> => {
await driver.setWorkflowDefinitionFilter(filterWorkflowNames);
};
- const onOpenTriggerCloudEvent = useCallback(() => {
- driver.openTriggerCloudEvent();
- }, []);
-
const filterWorkflowDefinition = (): WorkflowDefinition[] => {
if (filterWorkflowNames.length === 0) {
return workflowDefinitionList;
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/utils/WorkflowDefinitionListUtils.tsx
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/utils/WorkflowDefinitionListUtils.tsx
index 6aa34adddb8..f1c6716f9fb 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/utils/WorkflowDefinitionListUtils.tsx
+++
b/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/envelope/components/utils/WorkflowDefinitionListUtils.tsx
@@ -20,9 +20,11 @@
import React from "react";
import { DataTableColumn } from
"@kie-tools/runtime-tools-components/dist/components/DataTable";
import { PlayIcon } from "@patternfly/react-icons/dist/js/icons/play-icon";
+import { SitemapIcon } from
"@patternfly/react-icons/dist/js/icons/sitemap-icon";
import { Tooltip } from "@patternfly/react-core/dist/js/components/Tooltip";
import { Button } from "@patternfly/react-core/dist/js/components/Button";
import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
+
export const getColumn = (columnPath: string, columnLabel: string):
DataTableColumn => {
return {
label: columnLabel,
@@ -31,16 +33,26 @@ export const getColumn = (columnPath: string, columnLabel:
string): DataTableCol
};
};
-export const getActionColumn = (startWorkflow: (workflowDefinition:
WorkflowDefinition) => void): DataTableColumn => {
+export const getActionColumn = (
+ startWorkflow: (workflowDefinition: WorkflowDefinition) => void,
+ triggerCloudEvent: (workflowDefinition: WorkflowDefinition) => void
+): DataTableColumn => {
return {
label: "Actions",
path: "actions",
bodyCellTransformer: (value: any, rowData: WorkflowDefinition) => (
- <Tooltip content={`Start new workflow`}>
- <Button onClick={() => startWorkflow(rowData)} variant="link">
- <PlayIcon />
- </Button>
- </Tooltip>
+ <>
+ <Tooltip content={`Start new workflow`}>
+ <Button onClick={() => startWorkflow(rowData)} variant="link">
+ <PlayIcon />
+ </Button>
+ </Tooltip>
+ <Tooltip content={`Trigger cloud event`}>
+ <Button onClick={() => triggerCloudEvent(rowData)} variant="link">
+ <SitemapIcon />
+ </Button>
+ </Tooltip>
+ </>
),
};
};
diff --git
a/packages/runtime-tools-swf-gateway-api/src/__tests__/apis/apis.test.tsx
b/packages/runtime-tools-swf-gateway-api/src/__tests__/apis/apis.test.tsx
index 52ee282488d..112ae1a9216 100644
--- a/packages/runtime-tools-swf-gateway-api/src/__tests__/apis/apis.test.tsx
+++ b/packages/runtime-tools-swf-gateway-api/src/__tests__/apis/apis.test.tsx
@@ -140,11 +140,11 @@ describe("swf custom form tests", () => {
});
});
-describe("triiger cloud events serction", () => {
+describe("trigger cloud events section", () => {
beforeEach(() => {
jest.clearAllMocks();
});
- it("trigger cloud event start - with businesskey", async () => {
+ it("trigger cloud event start - with business key", async () => {
mockedAxios.request.mockResolvedValue("success");
const event = {
method: CloudEventMethod.POST,
@@ -157,6 +157,7 @@ describe("triiger cloud events serction", () => {
kogitobusinesskey: "1234",
},
},
+ serviceUrl: "http://localhost:8090/",
};
const response = await triggerStartCloudEvent(event,
"http://localhost:8080/");
@@ -167,14 +168,10 @@ describe("triiger cloud events serction", () => {
expect(request.url).toBe("http://localhost:8080/endpoint");
expect(request.method).toBe("POST");
- expect(request.data).toHaveProperty("specversion", "1.0");
- expect(request.data).toHaveProperty("type", "eventType");
- expect(request.data).toHaveProperty("source", "eventSource");
- expect(request.data).toHaveProperty(KOGITO_BUSINESS_KEY, "1234");
- expect(request.data).toHaveProperty("data", JSON.parse(event.data));
+ expect(request).toHaveProperty("data", JSON.parse(event.data));
});
- it("trigger cloud event start - without businesskey", async () => {
+ it("trigger cloud event start - without business key", async () => {
mockedAxios.request.mockResolvedValue("success");
const event = {
method: CloudEventMethod.POST,
@@ -185,6 +182,7 @@ describe("triiger cloud events serction", () => {
source: "eventSource",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
};
const response = await triggerStartCloudEvent(event,
"http://localhost:8080/");
@@ -195,7 +193,7 @@ describe("triiger cloud events serction", () => {
expect(request.url).toBe("http://localhost:8080/endpoint");
expect(request.method).toBe("POST");
- expect(request.data).toHaveProperty(KOGITO_BUSINESS_KEY, response);
+ expect(request).toHaveProperty("data", JSON.parse(event.data));
});
it("trigger cloud event - with instanceId", async () => {
@@ -211,6 +209,7 @@ describe("triiger cloud events serction", () => {
kogitoprocrefid: "1234",
},
},
+ serviceUrl: "http://localhost:8090/",
};
const response = await triggerCloudEvent(event, "http://localhost:8080/");
@@ -221,8 +220,7 @@ describe("triiger cloud events serction", () => {
expect(request.url).toBe("http://localhost:8080/endpoint");
expect(request.method).toBe("POST");
- expect(request.data).toHaveProperty(KOGITO_PROCESS_REFERENCE_ID, "1234");
- expect(request.data).not.toHaveProperty(KOGITO_BUSINESS_KEY);
+ expect(request).toHaveProperty("data", JSON.parse(event.data));
});
it("trigger cloud event - without instanceId", async () => {
@@ -236,6 +234,7 @@ describe("triiger cloud events serction", () => {
source: "eventSource",
extensions: {},
},
+ serviceUrl: "http://localhost:8090/",
};
const response = await triggerCloudEvent(event, "http://localhost:8080/");
@@ -246,8 +245,7 @@ describe("triiger cloud events serction", () => {
expect(request.url).toBe("http://localhost:8080/endpoint");
expect(request.method).toBe("POST");
- expect(request.data).not.toHaveProperty(KOGITO_PROCESS_REFERENCE_ID);
- expect(request.data).not.toHaveProperty(KOGITO_BUSINESS_KEY);
+ expect(request).toHaveProperty("data", JSON.parse(event.data));
});
it("trigger cloud event - using PUT", async () => {
@@ -263,6 +261,7 @@ describe("triiger cloud events serction", () => {
kogitoprocrefid: "1234",
},
},
+ serviceUrl: "http://localhost:8090/",
};
const response = await triggerCloudEvent(event, "http://localhost:8080/");
@@ -273,5 +272,6 @@ describe("triiger cloud events serction", () => {
expect(request.url).toBe("http://localhost:8080/endpoint");
expect(request.method).toBe("PUT");
+ expect(request).toHaveProperty("data", JSON.parse(event.data));
});
});
diff --git a/packages/runtime-tools-swf-gateway-api/src/gatewayApi/apis.tsx
b/packages/runtime-tools-swf-gateway-api/src/gatewayApi/apis.tsx
index 5dfe38b51f3..619ebe387c0 100644
--- a/packages/runtime-tools-swf-gateway-api/src/gatewayApi/apis.tsx
+++ b/packages/runtime-tools-swf-gateway-api/src/gatewayApi/apis.tsx
@@ -46,7 +46,6 @@ import { ApolloClient } from "apollo-client";
import { buildWorkflowListWhereArgument } from "./QueryUtils";
import axios from "axios";
import { v4 as uuidv4 } from "uuid";
-import SwaggerParser from "@apidevtools/swagger-parser";
export const getWorkflowInstances = async (
offset: number,
@@ -491,9 +490,14 @@ const doTriggerCloudEvent = (event: CloudEventRequest,
baseUrl: string, proxyEnd
return axios.request({
url: proxyEndpoint || url,
method: event.method,
- data: cloudEvent,
+ data: cloudEvent.data,
headers: {
...(proxyEndpoint ? { "Target-Url": url } : {}),
+ "ce-type": cloudEvent.type,
+ "ce-source": cloudEvent.source,
+ "ce-id": cloudEvent.id,
+ "ce-specversion": cloudEvent.specversion,
+ ...event.headers.extensions,
},
});
};
@@ -518,42 +522,29 @@ export const triggerCloudEvent = (event:
CloudEventRequest, baseUrl: string, pro
return doTriggerCloudEvent(event, baseUrl, proxyEndpoint);
};
-export const createWorkflowDefinitionList = (
- workflowDefinitionObjs: WorkflowDefinition[],
- url: string
-): WorkflowDefinition[] => {
- const workflowDefinitionList: WorkflowDefinition[] = [];
- workflowDefinitionObjs.forEach((workflowDefObj) => {
- const workflowName = Object.keys(workflowDefObj)[0].split("/")[1];
- const endpoint = `${url}/${workflowName}`;
- workflowDefinitionList.push({
- workflowName,
- endpoint,
- });
- });
- return workflowDefinitionList;
-};
-
-export const getWorkflowDefinitionList = (baseUrl: string, openApiPath:
string): Promise<WorkflowDefinition[]> => {
- return new Promise((resolve, reject) => {
- SwaggerParser.parse(`${baseUrl}/${openApiPath}`)
- .then((response) => {
- const workflowDefinitionObjs: any[] = [];
- const paths = response.paths;
- const regexPattern = /^\/[^\n/]+\/schema/;
- Object.getOwnPropertyNames(paths)
- .filter((path) => regexPattern.test(path.toString()))
- .forEach((url) => {
- let workflowArray = url.split("/");
- workflowArray = workflowArray.filter((name) => name.length !== 0);
- /* istanbul ignore else*/
- if
(Object.prototype.hasOwnProperty.call(paths![`/${workflowArray[0]}`], "post")) {
- workflowDefinitionObjs.push({ [url]: paths![url] });
- }
- });
- resolve(createWorkflowDefinitionList(workflowDefinitionObjs, baseUrl));
+export const getWorkflowDefinitions = (client: ApolloClient<any>):
Promise<WorkflowDefinition[]> => {
+ return new Promise<WorkflowDefinition[]>((resolve, reject) => {
+ client
+ .query({
+ query: GraphQL.GetProcessDefinitionsDocument,
+ fetchPolicy: "network-only",
+ errorPolicy: "all",
})
- .catch((err: any) => reject(err));
+ .then((value) => {
+ const workflowDefinitions = value.data.ProcessDefinitions;
+ resolve(
+ value.data.ProcessDefinitions.map((item: { id: string; endpoint:
string; serviceUrl: string }) => {
+ return {
+ workflowName: item.id,
+ endpoint: item.endpoint,
+ serviceUrl: item.serviceUrl,
+ };
+ })
+ );
+ })
+ .catch((reason) => {
+ reject({ errorMessage: JSON.stringify(reason) });
+ });
});
};
@@ -683,12 +674,20 @@ export const getCustomWorkflowSchemaFromApi = async (
export const getCustomWorkflowSchema = async (
baseUrl: string,
openApiPath: string,
- workflowName: string
+ workflowName: string,
+ proxyEndpoint?: string
): Promise<Record<string, any>> => {
return new Promise((resolve, reject) => {
- SwaggerParser.parse(`${baseUrl}/${openApiPath}`)
+ const url = `${baseUrl}/${openApiPath}`;
+ axios
+ .request({
+ url: proxyEndpoint || url,
+ headers: {
+ ...(proxyEndpoint ? { "Target-Url": url } : {}),
+ },
+ })
.then(async (response: any) => {
- resolve(await getCustomWorkflowSchemaFromApi(response, workflowName));
+ resolve(await getCustomWorkflowSchemaFromApi(response.data,
workflowName));
})
.catch((err) => reject(err));
});
diff --git a/packages/runtime-tools-swf-gateway-api/src/graphql/types.tsx
b/packages/runtime-tools-swf-gateway-api/src/graphql/types.tsx
index 502ff4e5110..a3395882cbd 100644
--- a/packages/runtime-tools-swf-gateway-api/src/graphql/types.tsx
+++ b/packages/runtime-tools-swf-gateway-api/src/graphql/types.tsx
@@ -1425,6 +1425,16 @@ export namespace GraphQL {
export type HandleJobRescheduleMutation = { __typename?: "Mutation";
JobReschedule?: string | null };
+ export const GetProcessDefinitionsDocument = gql`
+ query getProcessDefinitions {
+ ProcessDefinitions {
+ id
+ endpoint
+ serviceUrl
+ }
+ }
+ `;
+
export const GetProcessInstancesDocument = gql`
query getProcessInstances(
$where: ProcessInstanceArgument
diff --git a/packages/runtime-tools-swf-gateway-api/src/types.ts
b/packages/runtime-tools-swf-gateway-api/src/types.ts
index a8118dbc209..32fa6b87a69 100644
--- a/packages/runtime-tools-swf-gateway-api/src/types.ts
+++ b/packages/runtime-tools-swf-gateway-api/src/types.ts
@@ -140,6 +140,7 @@ export interface WorkflowListState {
export interface WorkflowDefinition {
workflowName: string;
endpoint: string;
+ serviceUrl: string;
}
export interface WorkflowResponse {
@@ -153,6 +154,7 @@ export enum CloudEventMethod {
}
export interface CloudEventRequest {
+ serviceUrl: string;
endpoint: string;
method: CloudEventMethod;
diff --git
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventForm.tsx
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventForm.tsx
index d4d2e2ddc6c..71395e3f57c 100644
---
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventForm.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventForm.tsx
@@ -36,6 +36,7 @@ interface CloudEventFormProps {
onStartWorkflowError: (error: any) => void;
onTriggerCloudEventSuccess: () => void;
onTriggerStartCloudEventSuccess: (businessKey: string) => void;
+ serviceUrl: string;
}
export enum CloudEventPageSource {
@@ -50,6 +51,7 @@ export const CloudEventForm: React.FC<CloudEventFormProps &
OUIAProps> = ({
onStartWorkflowError,
onTriggerCloudEventSuccess,
onTriggerStartCloudEventSuccess,
+ serviceUrl,
ouiaId,
ouiaSafe,
}) => {
@@ -86,6 +88,7 @@ export const CloudEventForm: React.FC<CloudEventFormProps &
OUIAProps> = ({
onStartWorkflowError={onStartWorkflowError}
onTriggerCloudEventSuccess={onTriggerCloudEventSuccess}
onTriggerStartCloudEventSuccess={onTriggerStartCloudEventSuccess}
+ serviceUrl={serviceUrl}
/>
</CardBody>
</Card>
diff --git
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormContextProvider.tsx
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormContextProvider.tsx
index 842e6a3bb2e..075d782eac0 100644
---
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormContextProvider.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormContextProvider.tsx
@@ -21,15 +21,10 @@ import React, { useMemo } from "react";
import CloudEventFormContext from "./CloudEventFormContext";
import { CloudEventFormGatewayApiImpl } from "./CloudEventFormGatewayApi";
-export function CloudEventFormContextProvider(
- props: React.PropsWithChildren<{ proxyEndpoint?: string; kogitoServiceUrl:
string }>
-) {
- const { proxyEndpoint, kogitoServiceUrl } = props;
+export function CloudEventFormContextProvider(props: React.PropsWithChildren<{
proxyEndpoint?: string }>) {
+ const { proxyEndpoint } = props;
- const gatewayApi = useMemo(
- () => new CloudEventFormGatewayApiImpl(kogitoServiceUrl, proxyEndpoint),
- [proxyEndpoint, kogitoServiceUrl]
- );
+ const gatewayApi = useMemo(() => new
CloudEventFormGatewayApiImpl(proxyEndpoint), [proxyEndpoint]);
return <CloudEventFormContext.Provider
value={gatewayApi}>{props.children}</CloudEventFormContext.Provider>;
}
diff --git
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormGatewayApi.ts
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormGatewayApi.ts
index 839ae00a2e2..1f85110b008 100644
---
a/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormGatewayApi.ts
+++
b/packages/runtime-tools-swf-webapp-components/src/CloudEventForm/CloudEventFormGatewayApi.ts
@@ -26,14 +26,14 @@ export interface CloudEventFormGatewayApi {
}
export class CloudEventFormGatewayApiImpl implements CloudEventFormGatewayApi {
- constructor(private readonly baseUrl: string, private readonly
proxyEndpoint?: string) {}
+ constructor(private readonly proxyEndpoint?: string) {}
async triggerStartCloudEvent(event: CloudEventRequest): Promise<string> {
- const response = await triggerStartCloudEvent(event, this.baseUrl,
this.proxyEndpoint);
+ const response = await triggerStartCloudEvent(event, event.serviceUrl,
this.proxyEndpoint);
return response;
}
triggerCloudEvent(event: CloudEventRequest): Promise<any> {
- return triggerCloudEvent(event, this.baseUrl, this.proxyEndpoint);
+ return triggerCloudEvent(event, event.serviceUrl, this.proxyEndpoint);
}
}
diff --git
a/packages/runtime-tools-swf-webapp-components/src/CloudEventFormContainer/CloudEventFormContainer.tsx
b/packages/runtime-tools-swf-webapp-components/src/CloudEventFormContainer/CloudEventFormContainer.tsx
index d8c15f34f34..80df5a6cec8 100644
---
a/packages/runtime-tools-swf-webapp-components/src/CloudEventFormContainer/CloudEventFormContainer.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/CloudEventFormContainer/CloudEventFormContainer.tsx
@@ -25,22 +25,28 @@ import { CloudEventRequest } from
"@kie-tools/runtime-tools-swf-gateway-api/dist
interface CloudEventFormContainerProps {
instanceId?: string;
+ definitionName?: string;
cloudEventSource: string;
isTriggerNewInstance: boolean;
onStartWorkflowError: (error: any) => void;
onTriggerCloudEventSuccess: () => void;
onTriggerStartCloudEventSuccess: (businessKey: string) => void;
+ serviceUrl: string;
+ targetOrigin?: string;
}
export const CloudEventFormContainer: React.FC<CloudEventFormContainerProps &
OUIAProps> = ({
instanceId,
+ definitionName,
cloudEventSource,
isTriggerNewInstance,
onStartWorkflowError,
onTriggerCloudEventSuccess,
onTriggerStartCloudEventSuccess,
+ serviceUrl,
ouiaId,
ouiaSafe,
+ targetOrigin,
}) => {
const gatewayApi = useCloudEventFormGatewayApi();
@@ -71,15 +77,16 @@ export const CloudEventFormContainer:
React.FC<CloudEventFormContainerProps & OU
return (
<EmbeddedCloudEventForm
{...componentOuiaProps(ouiaId, "cloud-event-form-container", ouiaSafe)}
- targetOrigin={window.location.origin}
+ targetOrigin={targetOrigin || window.location.origin}
isNewInstanceEvent={isTriggerNewInstance}
- defaultValues={{ cloudEventSource, instanceId }}
+ defaultValues={{ cloudEventSource, instanceId, definitionName }}
driver={{
triggerCloudEvent(event: CloudEventRequest): Promise<void> {
const doTrigger = isTriggerNewInstance ? triggerStartCloudEvent :
triggerCloudEvent;
return doTrigger(event);
},
}}
+ serviceUrl={serviceUrl}
/>
);
};
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListContextProvider.tsx
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListContextProvider.tsx
index 526004ed04c..6d324a7d658 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListContextProvider.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListContextProvider.tsx
@@ -20,13 +20,53 @@
import React, { useMemo } from "react";
import { WorkflowDefinitionListContext } from
"./WorkflowDefinitionListContext";
import { WorkflowDefinitionListGatewayApiImpl } from
"./WorkflowDefinitionListGatewayApi";
+import { HttpLink } from "apollo-link-http";
+import { InMemoryCache, NormalizedCacheObject } from "apollo-cache-inmemory";
+import { ApolloClient } from "apollo-client";
+import { GraphQLWorkflowDefinitionListQueries } from
"./WorkflowDefinitionListQueries";
-export function WorkflowDefinitionListContextProvider(props:
React.PropsWithChildren<{ kogitoServiceUrl: string }>) {
- const { kogitoServiceUrl } = props;
+export function WorkflowDefinitionListContextProvider(
+ props: React.PropsWithChildren<{ proxyEndpoint?: string; dataIndexUrl:
string }>
+) {
+ const { proxyEndpoint, dataIndexUrl } = props;
+
+ const httpLink = useMemo(
+ () =>
+ new HttpLink({
+ uri: proxyEndpoint || dataIndexUrl,
+ headers: {
+ ...(proxyEndpoint ? { "Target-Url": dataIndexUrl } : {}),
+ },
+ }),
+ [dataIndexUrl, proxyEndpoint]
+ );
+
+ const cache = useMemo(() => new InMemoryCache(), []);
+
+ const apolloClient: ApolloClient<NormalizedCacheObject> = useMemo(
+ () =>
+ new ApolloClient({
+ cache,
+ link: httpLink,
+ }),
+ [cache, httpLink]
+ );
+
+ return (
+ <WorkflowDefinitionListContextProviderWithApolloClient
apolloClient={apolloClient}>
+ {props.children}
+ </WorkflowDefinitionListContextProviderWithApolloClient>
+ );
+}
+
+export function WorkflowDefinitionListContextProviderWithApolloClient(
+ props: React.PropsWithChildren<{ apolloClient:
ApolloClient<NormalizedCacheObject> }>
+) {
+ const { apolloClient } = props;
const gatewayApiImpl = useMemo(() => {
- return new WorkflowDefinitionListGatewayApiImpl(kogitoServiceUrl,
"q/openapi.json");
- }, [kogitoServiceUrl]);
+ return new WorkflowDefinitionListGatewayApiImpl(new
GraphQLWorkflowDefinitionListQueries(apolloClient));
+ }, [apolloClient]);
return (
<WorkflowDefinitionListContext.Provider value={gatewayApiImpl}>
@@ -34,5 +74,3 @@ export function WorkflowDefinitionListContextProvider(props:
React.PropsWithChil
</WorkflowDefinitionListContext.Provider>
);
}
-
-export default WorkflowDefinitionListContextProvider;
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListGatewayApi.ts
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListGatewayApi.ts
index 3f2691343df..a2a6c6ffb7b 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListGatewayApi.ts
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListGatewayApi.ts
@@ -18,14 +18,15 @@
*/
import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
-import { getWorkflowDefinitionList } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/gatewayApi";
+import { getWorkflowDefinitions } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/gatewayApi";
+import { WorkflowDefinitionListQueries } from
"../WorkflowDefinitionList/WorkflowDefinitionListQueries";
export interface WorkflowDefinitionListGatewayApi {
getWorkflowDefinitionFilter: () => Promise<string[]>;
setWorkflowDefinitionFilter: (filter: string[]) => Promise<void>;
getWorkflowDefinitionsQuery: () => Promise<WorkflowDefinition[]>;
openWorkflowForm: (workflowDefinition: WorkflowDefinition) => Promise<void>;
- openTriggerCloudEvent: () => void;
+ openTriggerCloudEvent: (workflowDefinition: WorkflowDefinition) =>
Promise<void>;
onOpenWorkflowFormListen: (listener: OnOpenWorkflowFormListener) =>
UnSubscribeHandler;
onOpenTriggerCloudEventListen: (listener: OnOpenTriggerCloudEventListener)
=> UnSubscribeHandler;
}
@@ -35,7 +36,7 @@ export interface OnOpenWorkflowFormListener {
}
export interface OnOpenTriggerCloudEventListener {
- onOpen: () => void;
+ onOpen: (workflowDefinition: WorkflowDefinition) => void;
}
export interface UnSubscribeHandler {
@@ -46,13 +47,11 @@ export class WorkflowDefinitionListGatewayApiImpl
implements WorkflowDefinitionL
private readonly onOpenWorkflowListeners: OnOpenWorkflowFormListener[] = [];
private readonly onOpenTriggerCloudEventListeners:
OnOpenTriggerCloudEventListener[] = [];
- private readonly baseUrl: string;
- private readonly openApiPath: string;
+ private readonly queries: WorkflowDefinitionListQueries;
private workflowDefinitionFilter: string[] = [];
- constructor(url: string, path: string) {
- this.baseUrl = url;
- this.openApiPath = path;
+ constructor(queries: WorkflowDefinitionListQueries) {
+ this.queries = queries;
}
getWorkflowDefinitionFilter(): Promise<string[]> {
@@ -100,10 +99,11 @@ export class WorkflowDefinitionListGatewayApiImpl
implements WorkflowDefinitionL
}
getWorkflowDefinitionsQuery(): Promise<WorkflowDefinition[]> {
- return getWorkflowDefinitionList(this.baseUrl, this.openApiPath);
+ return this.queries.getWorkflowDefinitions();
}
- openTriggerCloudEvent(): void {
- this.onOpenTriggerCloudEventListeners.forEach((listener) =>
listener.onOpen());
+ openTriggerCloudEvent(workflowDefinition: WorkflowDefinition): Promise<void>
{
+ this.onOpenTriggerCloudEventListeners.forEach((listener) =>
listener.onOpen(workflowDefinition));
+ return Promise.resolve();
}
}
diff --git
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListQueries.ts
similarity index 60%
copy from
packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
copy to
packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListQueries.ts
index d81dbc3052f..115f12cfc06 100644
---
a/packages/runtime-tools-swf-enveloped-components/src/workflowDefinitions/api/WorkflowDefinitionListChannelApi.ts
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/WorkflowDefinitionListQueries.ts
@@ -17,15 +17,22 @@
* under the License.
*/
+import { getWorkflowDefinitions } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/gatewayApi";
import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
+import { ApolloClient } from "apollo-client";
-/**
- * Channel Api for Workflow Definition List
- */
-export interface WorkflowDefinitionListChannelApi {
- workflowDefinitionList__getWorkflowDefinitionsQuery():
Promise<WorkflowDefinition[]>;
- workflowDefinitionList__setWorkflowDefinitionFilter(filter: string[]):
Promise<void>;
- workflowDefinitionList__getWorkflowDefinitionFilter(): Promise<string[]>;
- workflowDefinitionList__openWorkflowForm(workflowDefinition:
WorkflowDefinition): Promise<void>;
- workflowDefinitionsList__openTriggerCloudEvent(): void;
+export interface WorkflowDefinitionListQueries {
+ getWorkflowDefinitions(): Promise<WorkflowDefinition[]>;
+}
+
+export class GraphQLWorkflowDefinitionListQueries implements
WorkflowDefinitionListQueries {
+ private readonly client: ApolloClient<any>;
+
+ constructor(client: ApolloClient<any>) {
+ this.client = client;
+ }
+
+ getWorkflowDefinitions(): Promise<WorkflowDefinition[]> {
+ return getWorkflowDefinitions(this.client);
+ }
}
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/index.ts
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/index.ts
index cdaba08f67b..c4a06a02226 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/index.ts
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionList/index.ts
@@ -18,5 +18,5 @@
*/
export * from "./WorkflowDefinitionListContext";
-export { default as WorkflowDefinitionListContextProvider } from
"./WorkflowDefinitionListContextProvider";
+export * from "./WorkflowDefinitionListContextProvider";
export { WorkflowDefinitionListGatewayApi } from
"./WorkflowDefinitionListGatewayApi";
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionListContainer/WorkflowDefinitionListContainer.tsx
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionListContainer/WorkflowDefinitionListContainer.tsx
index a79dded3747..6191eccb0c3 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionListContainer/WorkflowDefinitionListContainer.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowDefinitionListContainer/WorkflowDefinitionListContainer.tsx
@@ -20,16 +20,18 @@
import React, { useEffect } from "react";
import { componentOuiaProps, OUIAProps } from
"@kie-tools/runtime-tools-components/dist/ouiaTools";
import { EmbeddedWorkflowDefinitionList } from
"@kie-tools/runtime-tools-swf-enveloped-components/dist/workflowDefinitions";
-import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
+import { WorkflowDefinition, WorkflowInstance } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
import { useWorkflowDefinitionListGatewayApi, WorkflowDefinitionListGatewayApi
} from "../WorkflowDefinitionList";
interface WorkflowDefinitionListContainerProps {
onOpenWorkflowForm: (workflowDefinition: WorkflowDefinition) => void;
+ onOpenTriggerCloudEventForWorkflow: (workflowDefinition: WorkflowDefinition)
=> void;
targetOrigin?: string;
}
export const WorkflowDefinitionListContainer:
React.FC<WorkflowDefinitionListContainerProps & OUIAProps> = ({
onOpenWorkflowForm,
+ onOpenTriggerCloudEventForWorkflow,
ouiaId,
ouiaSafe,
targetOrigin,
@@ -42,11 +44,17 @@ export const WorkflowDefinitionListContainer:
React.FC<WorkflowDefinitionListCon
onOpenWorkflowForm(workflowDefinition);
},
});
+ const onTriggerCloudEventUnsubscriber =
gatewayApi.onOpenTriggerCloudEventListen({
+ onOpen(workflowDefinition: WorkflowDefinition) {
+ onOpenTriggerCloudEventForWorkflow(workflowDefinition);
+ },
+ });
return () => {
onOpenDefinitionUnsubscriber.unSubscribe();
+ onTriggerCloudEventUnsubscriber.unSubscribe();
};
- }, [gatewayApi, onOpenWorkflowForm]);
+ }, [gatewayApi, onOpenWorkflowForm, onOpenTriggerCloudEventForWorkflow]);
return (
<EmbeddedWorkflowDefinitionList
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormContextProvider.tsx
b/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormContextProvider.tsx
index b279883661e..5cdc801537e 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormContextProvider.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormContextProvider.tsx
@@ -21,14 +21,12 @@ import React, { useMemo } from "react";
import { WorkflowFormContext } from "./WorkflowFormContext";
import { WorkflowFormGatewayApiImpl } from "./WorkflowFormGatewayApi";
-export function WorkflowFormContextProvider(
- props: React.PropsWithChildren<{ proxyEndpoint?: string; kogitoServiceUrl:
string }>
-) {
- const { proxyEndpoint, kogitoServiceUrl } = props;
+export function WorkflowFormContextProvider(props: React.PropsWithChildren<{
proxyEndpoint?: string }>) {
+ const { proxyEndpoint } = props;
const gatewayApiImpl = useMemo(() => {
- return new WorkflowFormGatewayApiImpl(kogitoServiceUrl, "q/openapi.json",
proxyEndpoint);
- }, [kogitoServiceUrl, proxyEndpoint]);
+ return new WorkflowFormGatewayApiImpl("q/openapi.json", proxyEndpoint);
+ }, [proxyEndpoint]);
return <WorkflowFormContext.Provider
value={gatewayApiImpl}>{props.children}</WorkflowFormContext.Provider>;
}
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormGatewayApi.ts
b/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormGatewayApi.ts
index d9a4040ffeb..3503d04ed06 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormGatewayApi.ts
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowForm/WorkflowFormGatewayApi.ts
@@ -22,19 +22,17 @@ import { getCustomWorkflowSchema, startWorkflowRest } from
"@kie-tools/runtime-t
export interface WorkflowFormGatewayApi {
setBusinessKey(bk: string): void;
getBusinessKey(): string;
- getCustomWorkflowSchema(workflowName: string): Promise<Record<string, any>>;
+ getCustomWorkflowSchema(workflowName: string, serviceUrl: string):
Promise<Record<string, any>>;
startWorkflow(endpoint: string, data: Record<string, any>): Promise<string>;
}
export class WorkflowFormGatewayApiImpl implements WorkflowFormGatewayApi {
private businessKey: string;
- private readonly baseUrl: string;
private readonly openApiPath: string;
private readonly proxyEndpoint?: string;
- constructor(baseUrl: string, openApiPath: string, proxyEndpoint?: string) {
+ constructor(openApiPath: string, proxyEndpoint?: string) {
this.businessKey = "";
- this.baseUrl = baseUrl;
this.openApiPath = openApiPath;
this.proxyEndpoint = proxyEndpoint;
}
@@ -47,8 +45,8 @@ export class WorkflowFormGatewayApiImpl implements
WorkflowFormGatewayApi {
return this.businessKey;
}
- getCustomWorkflowSchema(workflowName: string): Promise<Record<string, any>> {
- return getCustomWorkflowSchema(this.baseUrl, this.openApiPath,
workflowName);
+ getCustomWorkflowSchema(workflowName: string, serviceUrl: string):
Promise<Record<string, any>> {
+ return getCustomWorkflowSchema(serviceUrl, this.openApiPath, workflowName,
this.proxyEndpoint);
}
async startWorkflow(endpoint: string, data: Record<string, any>):
Promise<string> {
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowFormContainer/WorkflowFormContainer.tsx
b/packages/runtime-tools-swf-webapp-components/src/WorkflowFormContainer/WorkflowFormContainer.tsx
index 890a0df839c..7367c88d456 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowFormContainer/WorkflowFormContainer.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowFormContainer/WorkflowFormContainer.tsx
@@ -46,7 +46,10 @@ export const WorkflowFormContainer:
React.FC<WorkflowFormContainerProps & OUIAPr
{...componentOuiaProps(ouiaId, "workflow-form-container", ouiaSafe)}
driver={{
async getCustomWorkflowSchema(): Promise<Record<string, any>> {
- return
gatewayApi.getCustomWorkflowSchema(workflowDefinitionData.workflowName);
+ return gatewayApi.getCustomWorkflowSchema(
+ workflowDefinitionData.workflowName,
+ workflowDefinitionData.serviceUrl
+ );
},
async resetBusinessKey() {
onResetForm();
diff --git
a/packages/runtime-tools-swf-webapp-components/src/WorkflowListContainer/WorkflowListContainer.tsx
b/packages/runtime-tools-swf-webapp-components/src/WorkflowListContainer/WorkflowListContainer.tsx
index 741bd6f2104..a42899dd35e 100644
---
a/packages/runtime-tools-swf-webapp-components/src/WorkflowListContainer/WorkflowListContainer.tsx
+++
b/packages/runtime-tools-swf-webapp-components/src/WorkflowListContainer/WorkflowListContainer.tsx
@@ -27,7 +27,6 @@ import { WorkflowListGatewayApi } from
"../WorkflowList/WorkflowListGatewayApi";
interface WorkflowListContainerProps {
initialState: WorkflowListState;
onOpenWorkflowDetails: (args: { workflowId: string; state: WorkflowListState
}) => void;
- onOpenTriggerCloudEvent?: () => void;
onOpenTriggerCloudEventForWorkflow?: (workflowId: string) => void;
targetOrigin?: string;
}
@@ -35,7 +34,6 @@ interface WorkflowListContainerProps {
export const WorkflowListContainer: React.FC<WorkflowListContainerProps &
OUIAProps> = ({
initialState,
onOpenWorkflowDetails,
- onOpenTriggerCloudEvent,
onOpenTriggerCloudEventForWorkflow,
ouiaId,
ouiaSafe,
@@ -53,17 +51,14 @@ export const WorkflowListContainer:
React.FC<WorkflowListContainerProps & OUIAPr
onOpen(workflowInstance?: WorkflowInstance) {
if (workflowInstance) {
onOpenTriggerCloudEventForWorkflow?.(workflowInstance.id);
- return;
}
-
- onOpenTriggerCloudEvent?.();
},
});
return () => {
onOpenInstanceUnsubscriber.unSubscribe();
onTriggerCloudEventUnsubscriber?.unSubscribe();
};
- }, [gatewayApi, onOpenTriggerCloudEvent, onOpenTriggerCloudEventForWorkflow,
onOpenWorkflowDetails]);
+ }, [gatewayApi, onOpenTriggerCloudEventForWorkflow, onOpenWorkflowDetails]);
return (
<EmbeddedWorkflowList
diff --git
a/packages/serverless-logic-web-tools/src/homepage/routes/HomePageRoutes.tsx
b/packages/serverless-logic-web-tools/src/homepage/routes/HomePageRoutes.tsx
index 3d860c07b6a..a425d1cf3b2 100644
--- a/packages/serverless-logic-web-tools/src/homepage/routes/HomePageRoutes.tsx
+++ b/packages/serverless-logic-web-tools/src/homepage/routes/HomePageRoutes.tsx
@@ -79,8 +79,11 @@ export function HomePageRoutes(props: { isNavOpen: boolean
}) {
<Route path={routes.sampleCatalog.path({})}>
<SamplesCatalog />
</Route>
- <Route path={routes.runtimeToolsWorkflowInstances.path({})}>
- <RuntimeToolsWorkflowInstances />
+ <Route
path={routes.runtimeToolsTriggerCloudEventForWorkflowInstance.path({
workflowId: ":workflowId" })}>
+ {({ match }) => <RuntimeToolsTriggerCloudEvent />}
+ </Route>
+ <Route
path={routes.runtimeToolsTriggerCloudEventForWorkflowDefinition.path({
workflowName: ":workflowName" })}>
+ {({ match }) => <RuntimeToolsTriggerCloudEvent />}
</Route>
<Route path={routes.runtimeToolsWorkflowDetails.path({ workflowId:
":workflowId" })}>
{({ match }) => <RuntimeToolsWorkflowDetails
workflowId={match!.params.workflowId!} />}
@@ -91,8 +94,8 @@ export function HomePageRoutes(props: { isNavOpen: boolean })
{
<Route path={routes.runtimeToolsWorkflowDefinitions.path({})}>
<RuntimeToolsWorkflowDefinitions />
</Route>
- <Route path={routes.runtimeToolsTriggerCloudEvent.path({})}>
- <RuntimeToolsTriggerCloudEvent />
+ <Route path={routes.runtimeToolsWorkflowInstances.path({})}>
+ <RuntimeToolsWorkflowInstances />
</Route>
<Route component={NoMatchPage} />
</Switch>
diff --git
a/packages/serverless-logic-web-tools/src/homepage/uiNav/HomePageNav.tsx
b/packages/serverless-logic-web-tools/src/homepage/uiNav/HomePageNav.tsx
index 70734cc19ce..6281889c667 100644
--- a/packages/serverless-logic-web-tools/src/homepage/uiNav/HomePageNav.tsx
+++ b/packages/serverless-logic-web-tools/src/homepage/uiNav/HomePageNav.tsx
@@ -30,7 +30,7 @@ export function HomePageNav(props: { pathname: string }) {
const settings = useSettings();
const runtimeToolsNavItem = useMemo(() => {
- if (settings.runtimeTools.config.kogitoServiceUrl &&
settings.runtimeTools.config.dataIndexUrl) {
+ if (settings.runtimeTools.config.dataIndexUrl) {
return (
<NavExpandable title="Runtime Tools" groupId="runtime-tools-nav-group">
<NavItem
@@ -49,14 +49,6 @@ export function HomePageNav(props: { pathname: string }) {
>
<Link to={routes.runtimeToolsWorkflowInstances.path({})}>Workflow
Instances</Link>
</NavItem>
- <NavItem
- itemId={5}
- key={"RuntimeToolsTriggerCloudEvent-nav"}
- isActive={props.pathname ===
routes.runtimeToolsTriggerCloudEvent.path({})}
- ouiaId="runtime-tools-trigger-cloud-event-nav"
- >
- <Link to={routes.runtimeToolsTriggerCloudEvent.path({})}>Trigger
Cloud Event</Link>
- </NavItem>
</NavExpandable>
);
}
diff --git a/packages/serverless-logic-web-tools/src/navigation/Routes.ts
b/packages/serverless-logic-web-tools/src/navigation/Routes.ts
index 34e9015f780..6458a061bf5 100644
--- a/packages/serverless-logic-web-tools/src/navigation/Routes.ts
+++ b/packages/serverless-logic-web-tools/src/navigation/Routes.ts
@@ -148,14 +148,17 @@ export const routes = {
runtimeToolsWorkflowDetails: new Route<{
queryParams: QueryParams.FILTERS | QueryParams.SORT_BY;
pathParams: PathParams.WORKFLOW_ID;
- }>(({ workflowId }) => `/runtime-tools/workflow-details/${workflowId}`),
+ }>(({ workflowId }) => `/runtime-tools/workflow-instances/${workflowId}`),
runtimeToolsWorkflowForm: new Route<{
pathParams: PathParams.WORKFLOW_NAME;
}>(({ workflowName }) =>
`/runtime-tools/workflow-definition/${workflowName}`),
- runtimeToolsTriggerCloudEvent: new Route<{}>(() =>
`/runtime-tools/trigger-cloud-event`),
- runtimeToolsTriggerCloudEventForWorkflow: new Route<{
+ runtimeToolsTriggerCloudEventForWorkflowInstance: new Route<{
+ queryParams: QueryParams.URL;
pathParams: PathParams.WORKFLOW_ID;
- }>(({ workflowId }) => `/runtime-tools/trigger-cloud-event/${workflowId}`),
+ }>(({ workflowId }) =>
`/runtime-tools/workflow-instances/${workflowId}/trigger-cloud-event`),
+ runtimeToolsTriggerCloudEventForWorkflowDefinition: new Route<{
+ pathParams: PathParams.WORKFLOW_NAME;
+ }>(({ workflowName }) =>
`/runtime-tools/workflow-definition/${workflowName}/trigger-cloud-event`),
settings: {
home: new Route<{}>(() => SETTINGS_ROUTE),
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsCloudEventFormContextProvider.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsCloudEventFormContextProvider.tsx
index e5e85e9ab68..d93ab24f0f1 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsCloudEventFormContextProvider.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsCloudEventFormContextProvider.tsx
@@ -19,18 +19,13 @@
import * as React from "react";
import { WorkflowFormContextProvider } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowForm";
-import { useSettings } from "../../settings/SettingsContext";
import { useEnv } from "../../env/EnvContext";
export function WebToolsCloudEventFormContextProvider(props:
React.PropsWithChildren<{}>) {
- const settings = useSettings();
const { env } = useEnv();
return (
- <WorkflowFormContextProvider
- proxyEndpoint={env.SERVERLESS_LOGIC_WEB_TOOLS_CORS_PROXY_URL}
- kogitoServiceUrl={settings.runtimeTools.config.kogitoServiceUrl}
- >
+ <WorkflowFormContextProvider
proxyEndpoint={env.SERVERLESS_LOGIC_WEB_TOOLS_CORS_PROXY_URL}>
{props.children}
</WorkflowFormContextProvider>
);
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowDefinitionListContextProvider.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowDefinitionListContextProvider.tsx
index 96d10cd01b8..593cc2b6d3d 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowDefinitionListContextProvider.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowDefinitionListContextProvider.tsx
@@ -20,12 +20,17 @@
import * as React from "react";
import { WorkflowDefinitionListContextProvider } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDefinitionList";
import { useSettings } from "../../settings/SettingsContext";
+import { useEnv } from "../../env/EnvContext";
export function WebToolsWorkflowDefinitionListContextProvider(props:
React.PropsWithChildren<{}>) {
const settings = useSettings();
+ const { env } = useEnv();
return (
- <WorkflowDefinitionListContextProvider
kogitoServiceUrl={settings.runtimeTools.config.kogitoServiceUrl}>
+ <WorkflowDefinitionListContextProvider
+ proxyEndpoint={env.SERVERLESS_LOGIC_WEB_TOOLS_CORS_PROXY_URL}
+ dataIndexUrl={settings.runtimeTools.config.dataIndexUrl}
+ >
{props.children}
</WorkflowDefinitionListContextProvider>
);
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowFormContextProvider.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowFormContextProvider.tsx
index 72b9b2d2149..ae6c1bf7534 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowFormContextProvider.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/contexts/WebToolsWorkflowFormContextProvider.tsx
@@ -27,10 +27,7 @@ export function WebToolsWorkflowFormContextProvider(props:
React.PropsWithChildr
const { env } = useEnv();
return (
- <CloudEventFormContextProvider
- proxyEndpoint={env.SERVERLESS_LOGIC_WEB_TOOLS_CORS_PROXY_URL}
- kogitoServiceUrl={settings.runtimeTools.config.kogitoServiceUrl}
- >
+ <CloudEventFormContextProvider
proxyEndpoint={env.SERVERLESS_LOGIC_WEB_TOOLS_CORS_PROXY_URL}>
{props.children}
</CloudEventFormContextProvider>
);
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsTriggerCloudEvent.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsTriggerCloudEvent.tsx
index 6517964a81c..aaa705f84eb 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsTriggerCloudEvent.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsTriggerCloudEvent.tsx
@@ -23,11 +23,16 @@ import { Text, TextContent, TextVariants } from
"@patternfly/react-core/dist/js/
import { CloudEventFormContainer } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventFormContainer";
import { Alert, AlertActionCloseButton } from
"@patternfly/react-core/dist/js/components/Alert";
import { useGlobalAlert } from "../../alerts/GlobalAlertsContext";
+import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
+import { useHistory } from "react-router";
const PAGE_TITLE = "Trigger Cloud Event";
const KUBESMARTS_CLOUD_SOURCE = "/local/kubesmarts";
export function RuntimeToolsTriggerCloudEvent() {
+ const history = useHistory();
+ const workflowDefinition: WorkflowDefinition = (history.location.state as
any)["workflowDefinition"];
+
const triggerEventSuccessAlert = useGlobalAlert<{ message: string }>(
useCallback(({ close }, { message }) => {
return (
@@ -105,6 +110,7 @@ export function RuntimeToolsTriggerCloudEvent() {
onStartWorkflowError={onStartWorkflowError}
onTriggerCloudEventSuccess={onTriggerEventSuccessAlert}
onTriggerStartCloudEventSuccess={onTriggerStartCloudEventSuccess}
+ serviceUrl={workflowDefinition.serviceUrl}
/>
</PageSection>
</Page>
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowDefinitions.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowDefinitions.tsx
index b2de63fa2f4..994d16cb2bf 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowDefinitions.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowDefinitions.tsx
@@ -25,6 +25,7 @@ import { Text, TextContent, TextVariants } from
"@patternfly/react-core/dist/js/
import { useHistory } from "react-router";
import { routes } from "../../navigation/Routes";
import { WorkflowDefinition } from
"@kie-tools/runtime-tools-swf-gateway-api/dist/types";
+import { CloudEventPageSource } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventForm";
const PAGE_TITLE = "Workflow Definitions";
@@ -39,6 +40,7 @@ export function RuntimeToolsWorkflowDefinitions() {
workflowDefinition: {
workflowName: workflowDefinition.workflowName,
endpoint: workflowDefinition.endpoint,
+ serviceUrl: workflowDefinition.serviceUrl,
},
},
});
@@ -46,6 +48,25 @@ export function RuntimeToolsWorkflowDefinitions() {
[history]
);
+ const onOpenTriggerCloudEventForWorkflow = useCallback(
+ (workflowDefinition: WorkflowDefinition) => {
+ history.push({
+ pathname:
routes.runtimeToolsTriggerCloudEventForWorkflowDefinition.path({
+ workflowName: workflowDefinition.workflowName,
+ }),
+ state: {
+ workflowDefinition: {
+ workflowName: workflowDefinition.workflowName,
+ endpoint: workflowDefinition.endpoint,
+ serviceUrl: workflowDefinition.serviceUrl,
+ },
+ source: CloudEventPageSource.DEFINITIONS,
+ },
+ });
+ },
+ [history]
+ );
+
return (
<Page>
<PageSection variant={"light"}>
@@ -59,7 +80,10 @@ export function RuntimeToolsWorkflowDefinitions() {
<PageSection isFilled aria-label="workflow-definitions-section">
<Card>
- <WorkflowDefinitionListContainer
onOpenWorkflowForm={onOpenWorkflowForm} />
+ <WorkflowDefinitionListContainer
+ onOpenWorkflowForm={onOpenWorkflowForm}
+
onOpenTriggerCloudEventForWorkflow={onOpenTriggerCloudEventForWorkflow}
+ />
</Card>
</PageSection>
</Page>
diff --git
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowInstances.tsx
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowInstances.tsx
index b87254d4e6b..f281f88238f 100644
---
a/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowInstances.tsx
+++
b/packages/serverless-logic-web-tools/src/runtimeTools/pages/RuntimeToolsWorkflowInstances.tsx
@@ -43,19 +43,10 @@ export function RuntimeToolsWorkflowInstances() {
[history]
);
- const onOpenTriggerCloudEvent = useCallback(() => {
- history.push({
- pathname: routes.runtimeToolsTriggerCloudEvent.path({}),
- state: {
- source: CloudEventPageSource.INSTANCES,
- },
- });
- }, [history]);
-
const onOpenTriggerCloudEventForWorkflow = useCallback(
(workflowId: string) => {
history.push({
- pathname: routes.runtimeToolsTriggerCloudEventForWorkflow.path({
workflowId }),
+ pathname:
routes.runtimeToolsTriggerCloudEventForWorkflowInstance.path({ workflowId }),
state: {
source: CloudEventPageSource.INSTANCES,
},
@@ -79,7 +70,6 @@ export function RuntimeToolsWorkflowInstances() {
<WorkflowListContainer
initialState={initialState}
onOpenWorkflowDetails={onOpenWorkflowDetails}
- onOpenTriggerCloudEvent={onOpenTriggerCloudEvent}
onOpenTriggerCloudEventForWorkflow={onOpenTriggerCloudEventForWorkflow}
/>
</PageSection>
diff --git
a/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsConfig.tsx
b/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsConfig.tsx
index 7e30241396d..95c7dfad4ba 100644
---
a/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsConfig.tsx
+++
b/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsConfig.tsx
@@ -20,34 +20,26 @@
import { getCookie, makeCookieName, setCookie } from "../../cookies";
export const RUNTIME_TOOLS_DATA_INDEX_URL_COOKIE_NAME =
makeCookieName("runtime-tools", "data-index-url");
-export const RUNTIME_TOOLS_KOGITO_SERVICE_URL_COOKIE_NAME =
makeCookieName("runtime-tools", "kogito-service-url");
export interface RuntimeToolsSettingsConfig {
dataIndexUrl: string;
- kogitoServiceUrl: string;
}
export const EMPTY_CONFIG: RuntimeToolsSettingsConfig = {
dataIndexUrl: "",
- kogitoServiceUrl: "",
};
export function isRuntimeToolsConfigValid(config: RuntimeToolsSettingsConfig):
boolean {
- return isDataIndexUrlValid(config.dataIndexUrl) &&
isKogitoServiceUrlValid(config.kogitoServiceUrl);
+ return isDataIndexUrlValid(config.dataIndexUrl);
}
export function isDataIndexUrlValid(dataIndexUrl: string): boolean {
return dataIndexUrl !== undefined && dataIndexUrl.trim().length > 0;
}
-export function isKogitoServiceUrlValid(kogitoServiceUrl: string): boolean {
- return kogitoServiceUrl !== undefined && kogitoServiceUrl.trim().length > 0;
-}
-
export function readRuntimeToolsConfigCookie(): RuntimeToolsSettingsConfig {
return {
dataIndexUrl: getCookie(RUNTIME_TOOLS_DATA_INDEX_URL_COOKIE_NAME) ?? "",
- kogitoServiceUrl: getCookie(RUNTIME_TOOLS_KOGITO_SERVICE_URL_COOKIE_NAME)
?? "",
};
}
@@ -59,11 +51,6 @@ export function saveDataIndexUrlCookie(dataIndexUrl:
string): void {
setCookie(RUNTIME_TOOLS_DATA_INDEX_URL_COOKIE_NAME, dataIndexUrl);
}
-export function saveKogitoServiceUrlCookie(kogitoServiceUrl: string): void {
- setCookie(RUNTIME_TOOLS_KOGITO_SERVICE_URL_COOKIE_NAME, kogitoServiceUrl);
-}
-
export function saveConfigCookie(config: RuntimeToolsSettingsConfig): void {
saveDataIndexUrlCookie(config.dataIndexUrl);
- saveKogitoServiceUrlCookie(config.kogitoServiceUrl);
}
diff --git
a/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsSettings.tsx
b/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsSettings.tsx
index 111758b4b0c..ccbdd84723c 100644
---
a/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsSettings.tsx
+++
b/packages/serverless-logic-web-tools/src/settings/runtimeTools/RuntimeToolsSettings.tsx
@@ -65,18 +65,11 @@ export function RuntimeToolsSettings(props:
SettingsPageProps) {
const onClearDataIndexUrl = useCallback(() => setConfig({ ...config,
dataIndexUrl: "" }), [config]);
- const onClearKogitoServiceUrl = useCallback(() => setConfig({ ...config,
kogitoServiceUrl: "" }), [config]);
-
const onDataIndexURLChanged = useCallback(
(newValue: string) => setConfig({ ...config, dataIndexUrl: newValue }),
[config]
);
- const onKogitoServiceUrlChanged = useCallback(
- (newValue: string) => setConfig({ ...config, kogitoServiceUrl: newValue }),
- [config]
- );
-
const onReset = useCallback(() => {
setConfig(EMPTY_CONFIG);
settingsDispatch.runtimeTools.setConfig(EMPTY_CONFIG);
@@ -86,7 +79,6 @@ export function RuntimeToolsSettings(props:
SettingsPageProps) {
const onApply = useCallback(() => {
const newConfig: RuntimeToolsSettingsConfig = {
dataIndexUrl: removeTrailingSlashFromUrl(config.dataIndexUrl),
- kogitoServiceUrl: removeTrailingSlashFromUrl(config.kogitoServiceUrl),
};
setConfig(newConfig);
settingsDispatch.runtimeTools.setConfig(newConfig);
@@ -118,9 +110,6 @@ export function RuntimeToolsSettings(props:
SettingsPageProps) {
<b>Data Index URL: </b>
<i>{config.dataIndexUrl}</i>
<br />
- <b>SonataFlow Service URL: </b>
- <i>{config.kogitoServiceUrl}</i>
- <br />
<br />
<Button variant={ButtonVariant.tertiary} onClick={onReset}>
Reset
@@ -158,7 +147,11 @@ export function RuntimeToolsSettings(props:
SettingsPageProps) {
<FormGroup
label={"Data Index URL"}
labelIcon={
- <Popover bodyContent={"Data Index URL associated with your
running Kogito runtime service."}>
+ <Popover
+ bodyContent={
+ "Data Index URL associated with your running SonataFlow
runtime services. Used to list workflow instances and definitions."
+ }
+ >
<button
type="button"
aria-label="More info for Data Index URL field"
@@ -199,50 +192,6 @@ export function RuntimeToolsSettings(props:
SettingsPageProps) {
</InputGroupText>
</InputGroup>
</FormGroup>
- <FormGroup
- label={"SonataFlow Service URL"}
- labelIcon={
- <Popover bodyContent={"URL associated with your running
SonataFlow runtime service."}>
- <button
- type="button"
- aria-label="More info for SonataFlow Service URL field"
- onClick={(e) => e.preventDefault()}
- aria-describedby="kogito-service-url-field"
- className="pf-c-form__group-label-help"
- >
- <HelpIcon noVerticalAlign />
- </button>
- </Popover>
- }
- isRequired
- fieldId="kogito-service-url-field"
- >
- <InputGroup className="pf-u-mt-sm">
- <TextInput
- autoComplete={"off"}
- isRequired
- type="text"
- id="kogito-service-url-field"
- name="kogito-service-url-field"
- aria-label="SonataFlow Service URL field"
- aria-describedby="kogito-service-url-field-helper"
- value={config.kogitoServiceUrl}
- onChange={onKogitoServiceUrlChanged}
- tabIndex={2}
- data-testid="kogito-service-url-text-field"
- />
- <InputGroupText>
- <Button
- isSmall
- variant="plain"
- aria-label="Clear SonataFlow Service URL button"
- onClick={onClearKogitoServiceUrl}
- >
- <TimesIcon />
- </Button>
- </InputGroupText>
- </InputGroup>
- </FormGroup>
<ActionGroup>
<Button
isDisabled={!isCurrentConfigValid}
diff --git
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
index cba8192ffa8..edee9f13313 100644
---
a/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
+++
b/packages/serverless-workflow-dev-ui-webapp/src/components/DevUI/DevUILayout/DevUILayout.tsx
@@ -34,7 +34,7 @@ import { WorkflowFormContextProvider } from
"@kie-tools/runtime-tools-swf-webapp
import CustomDashboardListContextProvider from
"../../../channel/CustomDashboardList/CustomDashboardListContextProvider";
import { CustomDashboardViewContextProvider } from
"../../../channel/CustomDashboardView";
import { CloudEventFormContextProvider } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventForm";
-import { WorkflowDefinitionListContextProvider } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDefinitionList";
+import { WorkflowDefinitionListContextProviderWithApolloClient } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/WorkflowDefinitionList";
interface IOwnProps {
apolloClient: ApolloClient<any>;
@@ -83,13 +83,13 @@ const DevUILayout: React.FC<IOwnProps> = ({
>
<WorkflowListContextProviderWithApolloClient
apolloClient={apolloClient}>
<WorkflowDetailsContextProviderWithApolloClient
apolloClient={apolloClient}>
- <WorkflowDefinitionListContextProvider
kogitoServiceUrl={`${openApiBaseUrl}`}>
+ <WorkflowDefinitionListContextProviderWithApolloClient
apolloClient={apolloClient}>
<FormsListContextProvider>
<CustomDashboardListContextProvider>
<CustomDashboardViewContextProvider>
<FormDetailsContextProvider>
- <WorkflowFormContextProvider
kogitoServiceUrl={`${openApiBaseUrl}`}>
- <CloudEventFormContextProvider
kogitoServiceUrl={`${openApiBaseUrl}`}>
+ <WorkflowFormContextProvider>
+ <CloudEventFormContextProvider>
<MemoryRouter>
<Switch>
<Route path="/" render={renderPage} />
@@ -101,7 +101,7 @@ const DevUILayout: React.FC<IOwnProps> = ({
</CustomDashboardViewContextProvider>
</CustomDashboardListContextProvider>
</FormsListContextProvider>
- </WorkflowDefinitionListContextProvider>
+ </WorkflowDefinitionListContextProviderWithApolloClient>
</WorkflowDetailsContextProviderWithApolloClient>
</WorkflowListContextProviderWithApolloClient>
</DevUIAppContextProvider>
diff --git
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/CloudEventFormPage/CloudEventFormPage.tsx
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/CloudEventFormPage/CloudEventFormPage.tsx
index e54a6302e24..a76d850b007 100644
---
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/CloudEventFormPage/CloudEventFormPage.tsx
+++
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/CloudEventFormPage/CloudEventFormPage.tsx
@@ -30,6 +30,7 @@ import { PageTitle } from
"@kie-tools/runtime-tools-components/dist/components/P
import { FormNotification, Notification } from
"@kie-tools/runtime-tools-components/dist/components/FormNotification";
import { useHistory } from "react-router-dom";
import { CloudEventFormContainer } from
"@kie-tools/runtime-tools-swf-webapp-components/dist/CloudEventFormContainer";
+import { useDevUIAppContext } from "../../contexts/DevUIAppContext";
export interface CloudEventPageState {
source?: CloudEventPageSource;
@@ -43,13 +44,15 @@ export enum CloudEventPageSource {
const CloudEventFormPage: React.FC<OUIAProps> = ({ ouiaId, ouiaSafe }) => {
const [notification, setNotification] = useState<Notification>();
+ const context = useDevUIAppContext();
+
const history = useHistory();
const initialState = history.location && (history.location.state as
CloudEventPageState);
const isTriggerNewInstance = useMemo(() => {
const source = initialState.source;
- return source === CloudEventPageSource.DEFINITIONS;
+ return source !== CloudEventPageSource.INSTANCES;
}, [history]);
const showNotification = useCallback(
@@ -76,7 +79,7 @@ const CloudEventFormPage: React.FC<OUIAProps> = ({ ouiaId,
ouiaSafe }) => {
);
const onSubmitSuccess = useCallback((): void => {
- showNotification("success", "");
+ showNotification("success", "The CloudEvent has been successfully
triggered.");
}, []);
const onSubmitError = useCallback((details?: string) => {
@@ -108,10 +111,12 @@ const CloudEventFormPage: React.FC<OUIAProps> = ({
ouiaId, ouiaSafe }) => {
<CardBody className="pf-u-h-100">
<CloudEventFormContainer
isTriggerNewInstance={isTriggerNewInstance}
- cloudEventSource={`${initialState}`}
+ cloudEventSource={"/local/devui"}
onStartWorkflowError={(details) => onSubmitError(details)}
onTriggerCloudEventSuccess={() => onSubmitSuccess()}
onTriggerStartCloudEventSuccess={() => onSubmitSuccess()}
+ serviceUrl={context.getDevUIUrl()}
+ targetOrigin={context.getDevUIUrl()}
/>
</CardBody>
</Card>
diff --git
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx
index 6e8b37dd957..935fa7fc76b 100644
---
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx
+++
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowFormPage/WorkflowFormPage.tsx
@@ -80,7 +80,7 @@ const WorkflowFormPage: React.FC<OUIAProps> = ({ ouiaId,
ouiaSafe }) => {
};
const onSubmitSuccess = (message: string): void => {
- showNotification("success", message);
+ showNotification("success", `A workflow with id ${message} was started
successfully.`);
};
const onSubmitError = (details?: string) => {
diff --git
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
index 8c5665644f4..a88d182da1f 100644
---
a/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
+++
b/packages/serverless-workflow-dev-ui-webapp/src/components/pages/WorkflowsPage/WorkflowsPage.tsx
@@ -83,6 +83,23 @@ const WorkflowsPage:
React.FC<RouteComponentProps<MatchProps, StaticContext, H.L
workflowDefinition: {
workflowName: workflowDefinition.workflowName,
endpoint: workflowDefinition.endpoint,
+ serviceUrl: workflowDefinition.serviceUrl,
+ },
+ },
+ });
+ },
+ [history]
+ );
+
+ const onOpenTriggerCloudEvent = useCallback(
+ (workflowDefinition: WorkflowDefinition) => {
+ history.push({
+ pathname: `/WorkflowDefinitions/CloudEvent`,
+ state: {
+ workflowDefinition: {
+ workflowName: workflowDefinition.workflowName,
+ endpoint: workflowDefinition.endpoint,
+ serviceUrl: workflowDefinition.serviceUrl,
},
},
});
@@ -120,6 +137,7 @@ const WorkflowsPage:
React.FC<RouteComponentProps<MatchProps, StaticContext, H.L
<Card className="Dev-ui__card-size">
<WorkflowDefinitionListContainer
onOpenWorkflowForm={onOpenWorkflowForm}
+ onOpenTriggerCloudEventForWorkflow={onOpenTriggerCloudEvent}
targetOrigin={apiContext.getDevUIUrl()}
/>
</Card>
diff --git
a/packages/sonataflow-deployment-webapp/src/pages/Workflows/CloudEventFormPage.tsx
b/packages/sonataflow-deployment-webapp/src/pages/Workflows/CloudEventFormPage.tsx
index 641ae284237..b9ff8eeb491 100644
---
a/packages/sonataflow-deployment-webapp/src/pages/Workflows/CloudEventFormPage.tsx
+++
b/packages/sonataflow-deployment-webapp/src/pages/Workflows/CloudEventFormPage.tsx
@@ -159,7 +159,11 @@ export function CloudEventFormPage() {
</Title>
</EmptyState>
) : (
- <CloudEventForm driver={driver} defaultValues={defaultValues} />
+ <CloudEventForm
+ driver={driver}
+ defaultValues={defaultValues}
+ serviceUrl={window.location.href.split("/#")[0]}
+ />
)}
</CardBody>
</Card>
diff --git
a/packages/sonataflow-deployment-webapp/src/pages/Workflows/WorkflowFormPage.tsx
b/packages/sonataflow-deployment-webapp/src/pages/Workflows/WorkflowFormPage.tsx
index 10d964627de..8c8a9c4750c 100644
---
a/packages/sonataflow-deployment-webapp/src/pages/Workflows/WorkflowFormPage.tsx
+++
b/packages/sonataflow-deployment-webapp/src/pages/Workflows/WorkflowFormPage.tsx
@@ -61,6 +61,7 @@ export function WorkflowFormPage(props: { workflowId: string
}) {
() => ({
workflowName: props.workflowId,
endpoint: `/${props.workflowId}`,
+ serviceUrl: window.location.href.split("/#")[0],
}),
[props.workflowId]
);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]