Commit graph

202 commits

Author SHA1 Message Date
Sipke Schoorstra 8c3f2658e8 Include hash in trigger comparer
This ensures triggers are updated when anything changes
2023-08-16 13:44:03 +02:00
Sipke Schoorstra f4ae684edd
Implement workflow inbox cleanup service (#4327) 2023-08-13 12:35:15 +02:00
Sipke Schoorstra af34276d60
Delete ActivityExecutionRecords when deleting workflow instances (#4324)
* Delete ActivityExecutionRecords when deleting workflow instances

* Enable Hangfire for testing, code formatting
2023-08-12 22:22:40 +02:00
Sipke Schoorstra b829a0acef Update Event Trigger endpoint to resume HTTP bookmarks 2023-08-12 21:58:15 +02:00
Sipke Schoorstra e2e861af05 Use FireAndForget strategy instead of Background worker
For some reason, the background worker causes duplicate handling of notifications
2023-08-12 21:09:07 +02:00
Sipke Schoorstra 6b68bd8f6d Prevent WorkflowInbox from triggering new workflows
when targeting a specific workflow instance
2023-08-12 21:08:14 +02:00
Sipke Schoorstra 7c99037de2
EF Core NoTracking (#4323)
* Use NoTracking for EF Core

* Use Activity ID as Node ID for modern tooling

* Fix DispatchWorkflow activity

* Update tests and remove redundant ToolVersion
2023-08-12 16:41:16 +02:00
Sipke Schoorstra 3ba6a548e1
Update ForEach activity with local variables (#4315)
* Update ForEach activity with local variables

* Add option to include activity instance ID as part of bookmark hash
2023-08-11 21:59:39 +02:00
Sipke Schoorstra 57d06244ec Remove unused constructor argument 2023-08-11 11:35:02 +02:00
Sipke Schoorstra 62ae3b1f6e
Add ability to push variables to scheduled work (#4306) 2023-08-09 22:35:44 +02:00
Sipke Schoorstra 95cefe631f
Bookmarks & Activity Instances (#4301)
* Add ActivityInstanceId to bookmark model

* Fix Telnyx activity resumption

* Fix missing activity instance ID forwarding to workflow inbox
2023-08-09 13:02:20 +02:00
Sipke Schoorstra a8079090aa
Telnyx fixes (#4300)
* Update flowchart to consider activity instance completion

* Update Telnyx activities to leverage workflow inbox

* Fix Telnyx webhook activities

* Fix TransferCall and IncomingCall activities

* Turn collections into arrays for JS

* Telnyx activity fixes
2023-08-08 20:50:21 +02:00
Sipke Schoorstra d355363bc9 Add Local Event option to PublishEvent
Closes #4291
2023-08-06 21:14:23 +02:00
Sipke Schoorstra 166e11c416
Fix loss of source file + line number (#4293)
Fixes #4287
2023-08-06 20:55:24 +02:00
Sipke Schoorstra c9ca4a121d
Workflow Inbox (#4292)
* Initial implementation of workflow inbox, submission and delivery

* Implement persistence providers

* Update EF Core migrations

* Rename Services to Stores in Dapper module

* Use default serializer for primitive arrays

* Update MongoDB provider to map BookmarkId to be primary key

* Implement MongoDB provider for activity execution logs

* Use EF Core by default

* Fix private JSON constructor logic
2023-08-06 17:03:36 +02:00
Sipke Schoorstra b6f41aff9b Fix import issue with workflow definition store populator
Fixes #4224
2023-07-28 13:13:34 +02:00
Sipke Schoorstra 0c8bbb935c Implement real time workflow update broadcasting using SignalR 2023-07-25 15:12:27 +02:00
Sipke Schoorstra a2a2b60d05 Update ActivityExecutionRecord model 2023-07-23 21:05:31 +02:00
Sipke Schoorstra 78aa011df8 Generate default instance ID 2023-07-23 19:38:52 +02:00
Sipke Schoorstra e5e34c821b Add ActivityExecutionRecord entity, persistence and endpoints 2023-07-22 21:05:33 +02:00
Sipke Schoorstra d473f2354b Add ActivityName to execution log, remove FaultedAt instance timestamp 2023-07-21 17:52:52 +02:00
Sipke Schoorstra 1902307cf5 Add support for filtering journal by activity IDs 2023-07-20 22:12:45 +02:00
Sipke Schoorstra f71e5c89ce Ensure schedules are deleted when bookmarks are deleted 2023-07-20 13:00:09 +02:00
Sipke Schoorstra 8652843f48 Implement schedule deletion when workflow instances are deleted 2023-07-20 11:57:20 +02:00
Sipke Schoorstra 72f4461ca3 Implement cascading deletion 2023-07-20 00:05:43 +02:00
Sipke Schoorstra 6ae59f06d6 Include activity version with execution log 2023-07-18 11:20:00 +02:00
Sipke Schoorstra 6e458e0053 Make Mediator package reusable from outside Elsa feature system 2023-07-17 21:43:35 +02:00
gurkanguran c11aa6cf5f
Implemented workflow validation for httpendpoint path (#4181)
* Validates HttpEndpoint path before publishing workflow

* Updated behaviour of mediator apis and implemented validation for workflow path

* Implement default strategy option

* Update mediator service names

* Return validation errors as 400 BadRequest

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-07-14 19:19:41 +02:00
Sipke Schoorstra dd3bdaa8d7 Enable workflow instance exporter by default 2023-07-13 16:13:09 +02:00
Sipke Schoorstra 9671d85013 Cleanup namespaces 2023-07-09 14:02:41 +02:00
Sipke Schoorstra fe2a897a30 Restructure models in Workflows.Core 2023-07-09 13:12:13 +02:00
Sipke Schoorstra 8c701aa0a7 Implement activity execution log record sequence ordering
This ensures events are always stored in sequence, even if their timestamps are the same.
2023-07-09 12:36:33 +02:00
Sipke Schoorstra 760b925e2a Add ability to sort on multiple fields 2023-07-09 12:35:48 +02:00
Sipke Schoorstra 77b1a97682 Cleanup unused code and blanks 2023-07-09 12:33:26 +02:00
Sipke Schoorstra 7224d19272 Create at least one trigger when no payloads are provided 2023-07-03 15:47:20 +02:00
Sipke Schoorstra 3c0dfbf46b Fix typo in description of RunTask activity 2023-06-30 15:52:35 +02:00
gurkanguran bc2b4e8fde
Mongodb implementation (#4127)
* Implemented MongoDb

* Use main entity models in mongodb

* Fixed object serialization issue

* Fixed issues caused by duplicate collection names

* Optimized count query

* Fixed the issues after merge

* Revert "Fixed the issues after merge"

This reverts commit 5568af60cfc107b8ee68fd4c89fbb02946f8a6a3.

* Use expression helper to solve mongodb query issue

* Handle null values during deserialization

* Moved MongoDb project to persistence folder

* Did some refactor and added type serializer for variable fix

* Modularize mongodb indices creation

* Fixed the build

* Implement variable serializer

* Update SQLite migrations

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-06-28 22:44:51 +02:00
MariusVuscanNx 545df0ea53
Publish event improvements (#4150) 2023-06-22 11:50:02 +02:00
MariusVuscanNx 183e2bc0a3
Fixed workflow definition populator to also take into consideration the isReadonly field (#4138) 2023-06-14 10:55:43 +02:00
Sipke Schoorstra c216185c5e
Update Workflow model with support for Inputs, Outputs and Outcomes (#4112)
* Fix mutable prop changes warning

* Fix graph no longer scrolling to content

* Remove unused namespace imports

* Update Workflow model with support for input, output and outcomes

* Update sample with EF core persistence

* Rename FluentStorage to BlobStorage
2023-06-08 11:39:19 +02:00
Sipke Schoorstra 6c1cca372c
Dapper persistence provider (#4109)
* Implement Dapper stores
2023-06-06 20:49:14 +02:00
Sipke Schoorstra 0bb2ddcfee
Support sub-workflow dependency handling of JSON workflows (#4098)
* Change "Usable as Activity" setting into checkbox

* Update client model

* Update query to use shadow property

* Update UsableAsActivity usages

* Implement staged provisioning of workflows

* Add tests

* Update migrations
2023-06-03 12:28:10 +02:00
Sipke Schoorstra 607aba1943 Fix identity assignment 2023-05-28 18:35:45 +02:00
Sipke Schoorstra c99280b792 Add methods to add multiple workflows from a given assembly 2023-05-28 16:20:16 +02:00
Sipke Schoorstra 6f455f7e70
Update DSL implementation and integration (#4073) 2023-05-28 11:54:12 +02:00
Sipke Schoorstra da82ef0635 Extract workflow state exporter into handler and add default exporter 2023-05-21 10:16:56 +02:00
Sipke Schoorstra 16452795b0 Change workflow runtime trigger options record into class 2023-05-21 10:16:25 +02:00
Sipke Schoorstra 47ed8e3571
Cleanup IActivity interface (#4010)
* Update activity names and descriptions

* Rename JS functions

* Make endpoint class internal

* Pre-create workflow instance ID when dispatching workflows
2023-05-08 22:38:59 +02:00
Sipke Schoorstra 307962c0f5 Revert "Simplify IActivity (#3991)"
This reverts commit ae9f4104c6.
2023-05-03 10:24:36 +02:00
Sipke Schoorstra ae9f4104c6
Simplify IActivity (#3991)
* Cleanup IActivity interface and update activity ctors

* Increase XML comment coverage
2023-05-02 20:05:36 +02:00
Sipke Schoorstra 9b6c08bf38
Fix HTTP triggers not being updated (#3985)
* Fix triggers not being replaced

* XML comments and minor DI changes
2023-05-01 12:06:51 +02:00
Sipke Schoorstra 885119c768 Add events for ActivityExecuting and ActivityExecuted 2023-04-28 11:37:01 +02:00
Sipke Schoorstra 0ea463fdd0
Add JSON workflow provider (#3955)
* Refactor import models

* Update API endpoints

* Add console sample to run workflow from JSON

* Add FluentStorage provider for JSON workflows + sample
2023-04-25 22:15:11 +02:00
Sipke Schoorstra a45b7e5fb2
Implement Onboarding sample (#3944)
* Add Parallel activity

* Update polymorphic converter to handle null values

* Add support for converting ExpandoObject into target type

* Update models in Webhooks module

* Add Onboarding sample projects

* Handle null values in converter

* Add error logging to webhook invoker

* Allow activity resumption callbacks to be static

* Handle $ref when serializing expando objects
2023-04-23 20:03:52 +02:00
Sipke Schoorstra 80ee38a727 Add missed updates 2023-04-22 00:02:51 +02:00
Sipke Schoorstra 81b893c32b
Fix timer issues (#3938)
* Fix Timer activities getting stuck at creating bookmark when triggered

* Recreate timer schedules based on triggers when application starts
2023-04-21 12:12:28 +02:00
Sipke Schoorstra 53dcd11f17
Send HTTP error when workflow faults (#3937)
* Implement workflow fault handling in HTTP context

* Handle faulted workflows across process boundariesl
2023-04-20 20:45:27 +02:00
Sipke Schoorstra 10c721786a
Workflow Context Updates (#3933)
* Incremental work on context activity

* Add extensions to get and set context params

* Update polymorphic converter to handle objects serialized to primitives

* Add convenience factory methods for SetWorkflowContextParameter activity

* Add API endpoint to list available provider types

* Implement workflow context provider selection property panel

* Update context provider picker to be based on selected providers

* Make SendEmail support different types of input for To, Cc and Bcc fields

* Fix EF Core WorkflowDefinitionStore to use polymorphic serialization for metadata

* Add JS support for getting workflow contexts

* Add Installed Features endpoint

* Update polymorphic object converter to skip start array

* Update activity execution middleware to handle background execution

* Fix sample program to include activity middleware for contexts

* Comments and cleanup
2023-04-19 21:28:58 +02:00
Sipke Schoorstra b739f5c096 Fix missing feature dependency 2023-04-17 15:58:07 +02:00
Sipke Schoorstra c8d87cd763
Simplify Proto.Actor bookmarks and triggers (#3917)
* Refactor HTTP route table population

* Update workflow definition EF store to use abstract IWorkflowInstanceStore

This decoupling is necessary, because the application might not be using EF Core, but e.g. Elasticsearch

* Move workflow state persistence to the default workflow runtime feature

* Update JS handler to provide access to variables during trigger indexing

* Configure Proto.Actor runtime with different workflow pipeline

* Add sample using Proto.Actor runtime

* Replace BookmarkGrain with DB based persistence
2023-04-17 15:23:05 +02:00
Sipke Schoorstra c3ed7e7865
Improve JSON serializationfor workflow state (#3913)
* Incremental work on WorkflowStateSerializer

* Update Flow HTTP Request activity to default to Done outcome

* Fix reference handling

* Fix polymorphic object converter

* Add comments

* Add support for registering type alias during DI setup via options

* Fix trigger and bookmark payload persistence

* Update sample model

* Add support for custom dictionary types

* Split general serializer options provider into focused serializer services

* Formatting

* Update migrations
2023-04-17 00:11:58 +02:00
Sipke Schoorstra 98e0b4ae5f Graceful handling of task cancellation 2023-04-13 20:35:55 +02:00
Sipke Schoorstra 5c3a016140 Merge remote-tracking branch 'origin/v3' into v3 2023-04-13 20:05:47 +02:00
Sipke Schoorstra 17406c1db3 Implement activity cancellation 2023-04-13 20:05:14 +02:00
Gürkan Güran 3ce7fdb53c Fixed missing journal issue 2023-04-13 16:36:02 +02:00
Sipke Schoorstra 83449f0508
Update Hangfire integration (#3898)
* Add Hangfire support for workflow scheduler

* Fix scheduled job cleanup

* Fix duplicate handler invocation

* Default scheduler fixes
2023-04-12 15:10:44 +02:00
Sipke Schoorstra 56b284c230
Quartz.NET integration (#3887)
* update Quartz.NET module

* Small cleanup

* Fix Timer activity
2023-04-11 20:17:15 +02:00
Victorio Berra 947859a37c
Update RunTask XML Comment (#3886)
Fixed typo.
2023-04-11 20:14:26 +02:00
Sipke Schoorstra d7c6d07c5a Update background activity invoker to only transport workflow-stored variables 2023-04-10 15:32:40 +02:00
Sipke Schoorstra 7a09944732
Refactor scheduling and background activity execution (#3884)
* Refactor background activity execution

* Refactor scheduler

* Remove Jobs module

* Add XML comments
2023-04-09 23:35:32 +02:00
Sipke Schoorstra cea4c8fa0a Add support for resuming workflows using activity instance ID and hash 2023-04-06 14:59:30 +02:00
Sipke Schoorstra 5aefa30886 Rename helper TryGet to GetOrDefault 2023-03-24 20:57:27 +01:00
Sipke Schoorstra 57882a5a80 Add support for triggering event synchronous and specific workflow instance targeting 2023-03-20 21:38:00 +01:00
Sipke Schoorstra fad27d0fb0
Refactor composite activity input and scoped memory (#3815)
* Incremental work

* Enable control over when to include full compositie root

* Cleanup

* Update WorkflowDefinitionActivity

* Implement input as variables

* Delete unused class

* Remove less common types

* Rename ExpandoObject to JSON

* Implement variable scoping

* Remove parent/child relationship from MemoryRegister

* Add support for sending input to "trigger event" endpoint

* Add support for configuring input storage driver

* Remove unused namespace imports

* Auto-register activity types when running a workflow

* Fix missing variables from containers
2023-03-20 19:55:11 +01:00
Sipke Schoorstra c1dca8fbe2
Fixes for Journal (#3792)
* Include NodeID in execution log and update workflow journal component

* Recreate Runtime migrations
2023-03-14 08:03:44 +01:00
Sipke Schoorstra 08069c40d2
Implement outcomes for SendHttpRequest activity (#3787) 2023-03-11 22:14:39 +01:00
herblinernexxbizz 7d7e893a62
V3 update routetable on startup (#3780)
* add triggering all indexes to route table

* create hostedservice to run population of routetable
2023-03-08 21:43:02 +01:00
Sipke Schoorstra ec47f93047 Small change in workflow filter terminology 2023-03-08 10:09:25 +01:00
MariusVuscanNx c30586cd9e
Implemented workflow authorization (#3773)
* Returned 404 when path is not found and 500 when there are multiple workflows with the same path

* Return failure response in case of workflow fault

* Started workflow authorization implementation

* Implemented workflow authorization
2023-03-08 09:49:43 +01:00
Sipke Schoorstra 1ac64b8197
Store & display evaluated activity state in workflow instance viewer (#3776)
* Implement activity state persistence

* Add sort API

* Implement activity state view

* Update EF Core migrations
2023-03-07 21:40:53 +01:00
herblinernexxbizz 0669998946
V3 on delete workflowdefinition update routes (#3757)
* triggers and routes are being deleted when workflows are deleted

* update interface

* remove obsolete method

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-03-06 12:22:29 +01:00
Sipke Schoorstra b8bc628555 Allow bookmark props to be excluded from hash 2023-03-06 12:15:11 +01:00
Sipke Schoorstra 1a713b4619
Rename "services" to "contracts" and "implementations" to "services" (#3758) 2023-03-03 22:47:23 +01:00
Sipke Schoorstra 00bd3228f6 Restructure contracts vs services namespace 2023-03-03 14:48:05 +01:00
Sipke Schoorstra 431db1c353
Refactor store APIs (#3740)
* Add array support for input/output arguments

* Add alias support for nullable types

* Refactor workflow definition store API

* Fix array and ui hint setting of input/output definition

* Refactor workflow instance store API

* Add XML comments

* Refactor trigger and bookmark store API
2023-02-27 14:14:50 +01:00
Sipke Schoorstra 1d1808af89
Workflow input/output (#3726)
* Improve activity JSON converter

Handles wrapped and unwrapped input

* Add SetWorkflowOutput activity

* Implement handling of child workflow output
2023-02-21 11:47:20 +01:00
Sipke Schoorstra d2d7f23d73
Fix deadlock + multiple trigger support (#3720)
* Lock on specific hash for new workflows and split between trigger new /& existing workflows

* Update flowchart to take into account the triggered activity to start

* Use dispatcher for resuming parent workflows

* Update logging middleware (and remove it by default)
2023-02-20 12:05:57 +01:00
Sipke Schoorstra 0a831ff65b Fix DispatchWorkflow 2023-02-17 19:23:34 +01:00
Sipke Schoorstra 6e8c4f9404
Dispatch Workflow activity (#3710)
* Implement DispatchWorkflow activity

* Implement workflow definition picker control
2023-02-16 11:00:06 +01:00
gurkanguran 407bfa6913
Use workflow definition as activity (#3654)
* Implemented usage of workflow definitions as activities

* Updated designer

* Removed activity definitions module

* Allow user to mark workflow to be used as activity

* Refactor

* Refactor

* Cleanup csproj

* Cleanup WorkflowDefinitionActivity

* Pascalize typename

* Fix JS intellisense initial load issue

* Add XML comments

* Add Jobs dependency

* Hide Composite root port from designer

* Move finding workflow activities logic to lower level

* Generate unique identities across hierarchy

* Refactor

* Revert "Generate unique identities across hierarchy"

This reverts commit 74f5e7830309ee76af6ab3a000a5e1ec41f1e90c.

* Implement unique node IDs

* Introduce new VersionOptions option

* Remove unused namespaces

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-01-28 00:36:03 +01:00
Sipke Schoorstra 6dba654e9f Make HTTP bookmark processing reusable 2023-01-24 21:03:50 +01:00
Sipke Schoorstra 0caa4c3c49 Add XML comments to ForEach<T> 2023-01-23 15:58:49 +01:00
Sipke Schoorstra 354781e193 Rename Activity to CodeActivity and ActivityBase to Activity 2023-01-19 21:49:24 +01:00
Sipke Schoorstra 20b8086dbc Fix dependencies 2023-01-13 23:16:55 +01:00
Sipke Schoorstra c6ceb247e1 Fix dependency issues 2023-01-13 20:10:05 +01:00
Sipke Schoorstra 006479c2b7
Finish Azure Service Bus activities (#3617)
* Incremental work on Azure Service Bus

* Update Azure Service Bus activities
2023-01-12 11:59:31 +01:00
Gürkan Güran bc97749057 Merge branch 'v3' into elasticsearch
# Conflicts:
#	src/bundles/Elsa.WorkflowServer.Web/Program.cs
#	src/bundles/Elsa.WorkflowServer.Web/appsettings.json
2023-01-11 11:56:35 +01:00
Sipke Schoorstra 2c65081110
MassTransit activities (#3613)
* Implement MessageReceived for MT

* Implement Publish activity provider

* Only create Publish activity for class types

* Add MassTransit sample project

* Fix comment
2023-01-10 14:32:14 +01:00
Gürkan Güran fcfd092003 Implemented Elasticsearch for workflow instance and log record persistence 2023-01-05 15:10:55 +01:00
Sipke Schoorstra 750c2094cc
RunTask activity (#3594)
* Implement RunTask activity
2023-01-04 20:36:38 +01:00