public async Task <IActionResult> Details(string id, string returnUrl, CancellationToken cancellationToken)
        {
            var instance = await workflowInstanceStore.GetByIdAsync(id, cancellationToken);


            if (instance == null)
            {
                return(NotFound());
            }

            var definition = await workflowDefinitionStore.GetByIdAsync(
                instance.DefinitionId,
                VersionOptions.SpecificVersion(instance.Version),
                cancellationToken
                );

            var workflow = new WorkflowModel
            {
                Activities  = definition.Activities.Select(x => CreateActivityModel(x, instance)).ToList(),
                Connections = definition.Connections.Select(x => new ConnectionModel(x)).ToList()
            };

            var model = new WorkflowInstanceDetailsModel(
                instance,
                definition,
                workflow,
                options.Value.ActivityDefinitions,
                returnUrl);

            return(View("Details", model));
        }
        public async Task <IActionResult> Trigger(string token, CancellationToken cancellationToken)
        {
            if (!tokenService.TryDecryptToken(token, out Signal signal))
            {
                return(NotFound());
            }

            var workflowInstance = await workflowInstanceStore.GetByIdAsync(signal.WorkflowInstanceId, cancellationToken);

            if (workflowInstance == null)
            {
                return(NotFound());
            }

            var input = new Variables
            {
                ["signal"] = signal.Name
            };

            await workflowInvoker.ResumeAsync(workflowInstance, input, cancellationToken : cancellationToken);

            return(HttpContext.Items.ContainsKey(WorkflowHttpResult.Instance)
                ? (IActionResult) new EmptyResult()
                : Accepted());
        }