Code clean up and Stop Workflow button implementation

This commit is contained in:
axeleron007 2021-09-28 17:35:07 +03:00
parent 297b7a0e13
commit d4ce7dd160
5 changed files with 36 additions and 8 deletions

View file

@ -20,6 +20,7 @@ export class ElsaWorkflowTestPanel {
@Prop() serverUrl: string;
@State() hubConnection: HubConnection;
@State() workflowTestActivityMessages: Array<WorkflowTestActivityMessage> = [];
@State() workflowStarted: boolean = false;
i18next: i18n;
signalRConnectionId: string;
@ -63,9 +64,9 @@ export class ElsaWorkflowTestPanel {
async onExecuteWorkflowClick() {
this.message = null;
this.workflowStarted = true;
this.workflowTestActivityMessages = [];
eventBus.emit(EventTypes.TestActivityMessageReceived, this, null);
const client = await createElsaClient(this.serverUrl);
const request: WorkflowTestExecuteRequest = {
workflowDefinitionId: this.workflowDefinition.definitionId,
@ -73,9 +74,24 @@ export class ElsaWorkflowTestPanel {
signalRConnectionId: this.signalRConnectionId
};
const client = await createElsaClient(this.serverUrl);
await client.workflowTestApi.execute(request);
}
async onStopWorkflowClick() {
eventBus.emit(EventTypes.TestActivityMessageReceived, this, null);
let message = this.workflowTestActivityMessages.last();
debugger;
if (!!message) {
const client = await createElsaClient(this.serverUrl);
await client.workflowInstancesApi.delete(message.workflowInstanceId);
}
this.workflowStarted = false;
this.workflowTestActivityMessages = [];
}
render() {
const t = (x, params?) => this.i18next.t(x, params);
@ -119,11 +135,19 @@ export class ElsaWorkflowTestPanel {
<Host>
<dl class="elsa-border-b elsa-border-gray-200 elsa-divide-y elsa-divide-gray-200">
<div class="elsa-py-3 elsa-flex elsa-justify-between elsa-text-sm elsa-font-medium">
<button type="button"
onClick={() => this.onExecuteWorkflowClick()}
class="elsa-ml-0 elsa-w-full elsa-inline-flex elsa-justify-center elsa-rounded-md elsa-border elsa-border-transparent elsa-shadow-sm elsa-px-4 elsa-py-2 elsa-bg-blue-600 elsa-text-base elsa-font-medium elsa-text-white hover:elsa-bg-blue-700 focus:elsa-outline-none focus:elsa-ring-2 focus:elsa-ring-offset-2 focus:elsa-ring-blue-500 sm:elsa-ml-3 sm:elsa-w-auto sm:elsa-text-sm">
{t('ExecuteWorkflow')}
</button>
{!this.workflowStarted ?
<button type="button"
onClick={() => this.onExecuteWorkflowClick()}
class="elsa-ml-0 elsa-w-full elsa-inline-flex elsa-justify-center elsa-rounded-md elsa-border elsa-border-transparent elsa-shadow-sm elsa-px-4 elsa-py-2 elsa-bg-blue-600 elsa-text-base elsa-font-medium elsa-text-white hover:elsa-bg-blue-700 focus:elsa-outline-none focus:elsa-ring-2 focus:elsa-ring-offset-2 focus:elsa-ring-blue-500 sm:elsa-ml-3 sm:elsa-w-auto sm:elsa-text-sm">
{t('ExecuteWorkflow')}
</button>
:
<button type="button"
onClick={() => this.onStopWorkflowClick()}
class="elsa-ml-0 elsa-w-full elsa-inline-flex elsa-justify-center elsa-rounded-md elsa-border elsa-border-transparent elsa-shadow-sm elsa-px-4 elsa-py-2 elsa-bg-red-600 elsa-text-base elsa-font-medium elsa-text-white hover:elsa-bg-red-700 focus:elsa-outline-none focus:elsa-ring-2 focus:elsa-ring-offset-2 focus:elsa-ring-red-500 sm:elsa-ml-3 sm:elsa-w-auto sm:elsa-text-sm">
{t('StopWorkflow')}
</button>
}
</div>
</dl>
{renderActivityTestMessage()}

View file

@ -2,6 +2,7 @@ export const resources = {
'en': {
default: {
'ExecuteWorkflow': 'Execute Workflow',
'StopWorkflow': 'Stop Workflow',
'EntryEndpoint': 'Entry Endpoint',
'Status': 'Status'
}
@ -9,6 +10,7 @@ export const resources = {
'nl-NL': {
default: {
'ExecuteWorkflow': 'Werkstroom uitvoeren',
'StopWorkflow': 'Werkstroom stoppen',
'EntryEndpoint': 'Invoer eindpunt',
'Status': 'Toestand'
}

View file

@ -325,6 +325,7 @@ export class SyntaxNames {
export interface WorkflowTestActivityMessage {
path?: string;
workflowInstanceId: string;
correlationId: string;
activityId: string;
status: string;

View file

@ -26,7 +26,6 @@ namespace Elsa.Server.Api.Handlers
var context = notification.ActivityExecutionContext;
string? path = default;
//var signalRConnectionId = context.WorkflowExecutionContext.WorkflowBlueprint.SignalRConnectionId;
var signalRConnectionId = context.WorkflowExecutionContext.WorkflowInstance.GetMetaData("signalRConnectionId")?.ToString();
if (string.IsNullOrWhiteSpace(signalRConnectionId)) return;
@ -53,6 +52,7 @@ namespace Elsa.Server.Api.Handlers
var message = new WorkflowTestMessage
{
Path = path,
WorkflowInstanceId = context.WorkflowInstance.Id,
CorrelationId = context.CorrelationId,
ActivityId = context.ActivityId,
WorkflowStatus = context.WorkflowExecutionContext.Status == WorkflowStatus.Running
@ -81,12 +81,12 @@ namespace Elsa.Server.Api.Handlers
public async Task Handle(ActivityExecutionResultFailed notification, CancellationToken cancellationToken)
{
var context = notification.ActivityExecutionContext;
//var signalRConnectionId = context.WorkflowExecutionContext.WorkflowBlueprint.SignalRConnectionId;
var signalRConnectionId = context.WorkflowExecutionContext.WorkflowInstance.GetMetaData("signalRConnectionId")?.ToString();
if (string.IsNullOrWhiteSpace(signalRConnectionId)) return;
var message = new WorkflowTestMessage
{
WorkflowInstanceId = context.WorkflowInstance.Id,
CorrelationId = context.CorrelationId,
ActivityId = context.ActivityId,
Error = notification.Exception.InnerException?.InnerException?.ToString()

View file

@ -3,6 +3,7 @@ namespace Elsa.Server.Api.Models
public class WorkflowTestMessage
{
public string? Path { get; set; }
public string WorkflowInstanceId { get; set; } = default!;
public string CorrelationId { get; set; } = default!;
public string ActivityId { get; set; } = default!;
public string Status { get; set; } = default!;