Commit graph

202 commits

Author SHA1 Message Date
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
Sipke Schoorstra b4dba6ffe5
Add PublishEvent activity and implement MassTransit dispatcher (#3593) 2023-01-04 15:28:28 +01:00
Sipke Schoorstra cbbac57e6f
Implement variables panel on workflow instance viewer (#3589)
* Small visual improvement for embedded ports

* Implement variables view for workflow instance viewer
2023-01-03 19:15:05 +01:00
Sipke Schoorstra 06e62b3bcc
Restore workflow journal (#3582)
* Refactor identity options

* Delete templates

Will be created as part of a separate repo.

* Little cleanup

* Increase token lifetime for reference server app

* Cleanup workflow definition editor plugin

* Fix workflow instance viewer component

* Update identity generator to use hyphen format

* Improve workflow and activity execution pipeline registration API

* Fix workflow journal

* Update backend

* Prevent unnecessary re-render

* Restore autolayout function
2023-01-02 22:24:05 +01:00
gurkanguran 4272d5a49c
Implemented workflow sink module (#3571)
* Implemented workflow sink module

* Sequentual process of saving sinks in single consumer

* Refactor

* Log errors during sink export

* Removed redundant classes

* Use in process messaging in bundle

* Fixed the issue with duplicated ResultVariable key on serializing

* Moved workflowsink modules out of persistence projects

* Moved migrations out of old projects

Co-authored-by: Gürkan Güran <grkngrn@gmail.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-01-01 18:02:38 +01:00
Sipke Schoorstra 7a98cdf60d
Normalize extensions namespaces (#3577) 2022-12-31 16:16:43 +01:00
Sipke Schoorstra 8ac225520b
Improve variable vs non-variable persistence (#3568)
* Incremental fixes

* Fix base assignment of async delegate block reference

* Reuse existing memory blocks

* Remove PlaybackStarted child activity

The PlaybackStarted property is unnecessary, since the PlayAudio activity already completes right after playback has started.

* Add GetCallStatus API method

* Prevent variables on composite activities to be overwritten during deserialization

* Remove unnecessary variable declarations

Activity variables will be declared automatically during activity invocation.

* Add XML comments

* Remove unused references arg

* Streamline variable identity assignment

* Fix composite early exit completion

* Move identity assignment to workflow definition service
2022-12-25 22:02:28 +01:00
Sipke Schoorstra 24692586a5
Persistent variables (#3563)
* Stash

* Incremental work on persistent variables

* Move variable management to central service

* Implement variable cleanup upon composite activity completion
2022-12-23 16:05:37 +01:00
Sipke Schoorstra a17bbbc112 Stash 2022-12-22 20:23:18 +01:00
Sipke Schoorstra bbe8ee34c0 Update packages 2022-12-22 15:55:20 +01:00
Sipke Schoorstra 2dcd9bcd73 Add .NET 7 as a target 2022-12-22 15:40:31 +01:00
Sipke Schoorstra 3755ff3f4d Apply distributed lock when triggering new workflows 2022-12-21 20:25:25 +01:00
Sipke Schoorstra 97b4966233
Workflow activation strategies (#3559)
* Implement workflow activation strategies

* Rename activation strategy API

* Rename workflow activation strategy API and implement dynamic description display

* Fix trigger workflow correlation

* Expose correlation ID from liquid

* Update workflow runtimes to invoke activation strategies

* Update workflow definition builder API with support for activation strategies
2022-12-21 19:36:40 +01:00
Sipke Schoorstra 594970bfc6 Fix persistent variable serialization 2022-12-16 12:11:45 +01:00
Sipke Schoorstra 026430fd2d
Composite Activity fixes and improvements (#3512)
* Implement consistent input/output/variable memory block identifiers

* Telnyx fixes and improvements

* Fix bookmark burning

* Refactor AnswerCall

* Incremental work on source + line registration

* Handle missing bookmarks

* Fix bookmark persisted callback mechanism

* Implement distributed locking for default workflow runtime

* Fix recording bookmark

* Increase source file and line coverage
2022-12-07 20:47:36 +01:00
Sipke Schoorstra 2567eb6535 Implement variable picker 2022-11-23 22:36:43 +01:00
Sipke Schoorstra 9dcae97a0e Add support for lazy initialization of output 2022-11-20 20:37:56 +01:00
Sipke Schoorstra 660cfbfd05 Update DB context class names and create SQL Server provider 2022-11-20 19:00:03 +01:00
Sipke Schoorstra 8cc8d1bcbf
Telnyx integration (#3453)
* Incremental work on Telnyx integration

* Incremental port of Telnyx activities

* Fix polymorphic JSON serialization for webhook data

* Fix IsFirstPass logic

* Fix trigger base to prevent activity auto completion

* Temporarily disable persistent snapshotting provider for testing

* Fix namespaces

* Add method to register activities in bulk using marker type

* Fix Telnyx refit client setup

* Register all Telnyx activities by default

* Incremental work on webhook driven resumption and correlation

* Incremental work on post-bookmark signaling

* Fix bookmark resolution

* Include correlation ID with bookmark

* Fix Telnyx resumption input

* Replace bookmark persisted signal with handler

* Fix SpeakText completion

* Add flow outcomes to SpeakText activity

* Update GatherUsingSpeak and GatherUsingaudio

* Refactor "is first pass" concept

* Fix WebhookEvent activity

* Add HTTP absolute URL provider

* Formatting and small changes

* Various API enhancements
2022-11-19 22:30:43 +01:00
Sipke Schoorstra 5e180accc7 Incremental work on workflow instance viewer 2022-11-13 13:32:23 +01:00
Sipke Schoorstra 6947f45693 Remove unused namespaces 2022-11-13 12:45:34 +01:00
Sipke Schoorstra 3bed8b970b Fix package tags 2022-11-11 21:25:14 +01:00
Sipke Schoorstra e9d4c9b6d5 Prepare projects for packaging 2022-11-03 21:40:23 +01:00
Sipke Schoorstra c6bfd1f574
Asynchronous Activities (#3386)
* Update job activities handler

Looks like somehow implicit global usings have been removed or disabled 🤔

* Implement background activity execution

* Checkbox UI improvements

* Implement Task configuration for asynchronous execution

* Make job queue hosted service process jobs in parallel

* Make job worker count configurable
2022-10-27 12:05:30 +02:00
Sipke Schoorstra b9864a25fa
Queue-based activity scheduler (#3344)
* Incremental work on queue-based activity scheduling

* Update WorkflowHost to handle resumption of non-running workflows
2022-10-12 18:44:05 +02:00
Sipke Schoorstra 4b0af64cee
Exportable & importable workflow state + execution (#3317)
* Incremental work on externalizing workflow state execution

* Finish resumable WriteHttpResponse
2022-10-04 11:57:01 +02:00
Sipke Schoorstra 31942ae96f
Implement async workflow state exporter for DB workflow instance (#3291)
* Incremental work on in-process message consumers

* Implement asynchronous workflow state DB exporter

* Fixes
2022-09-07 17:28:36 +02:00
Sipke Schoorstra b3bae39bfe
Default Runtime & Persistence (#3287)
* Delete DefaultWorkflowInvoker.cs

* Incremental work

* Refactor runtime

* Implement workflow state store + bookmark store

* Cleanup

* Update migrations

* Move store abstractions to management and runtime projects

* Consolidate persistence providers into single package

* Generate migrations

* Regenerate migrations

* Fix DI of memory stores

* Update migrations

* Refactor definition reference due to unserializable record

* Update web server bundle to use EF core by default

* Update Bookmark.cs

Fixes System Text Json deserialization
2022-09-04 17:04:14 +02:00
Sipke Schoorstra b318b69bda Move CRL workflow definition provider 2022-09-02 19:06:00 +02:00
Sipke Schoorstra bfefd3f237
V3 default runtime (#3285)
* Incremental work on default runtime

* Fix workflow rooting
2022-09-02 19:02:24 +02:00
Sipke Schoorstra 220a1b4593 Cleanup 2022-09-02 13:36:03 +02:00
Sipke Schoorstra e2ffafc736
Refactor proto actor runtime with snapshot support (#3283)
* Initial working grain

* Incremental work on actor bookmark management & resuming wokflows

* Upgrade Proto Actor package references

* Fix lifetime of actors

* Implement bookmark and resumption

* Update Program.cs

* Update bookmark event publishing

* Refactor proto actor features API

* Implement snapshotting

* Update snapshotting

* Add in-memory provider and use it by default

* Update server bundle to use proto actor sqlite persistence by default
2022-09-02 13:18:53 +02:00
Gürkan Güran d614a0dbe6 Implemented version history 2022-08-29 18:22:58 +02:00
Sipke Schoorstra 078f21cf61 Incremental work 2022-08-26 21:59:17 +02:00
Sipke Schoorstra 66b1785c7f Add convenience workflow construction methods 2022-08-25 19:56:01 +02:00
Sipke Schoorstra 8ad878d0ca Rename InvokeWorkflowResult 2022-08-25 19:55:34 +02:00
Sipke Schoorstra a983457076 Rename builder service 2022-08-25 13:45:35 +02:00
Sipke Schoorstra 7870012254 Implement versioned activities 2022-08-11 19:29:32 +02:00
Sipke Schoorstra e942f799ec Add default implementations for job queue and scheduler 2022-08-11 12:45:07 +02:00
Sipke Schoorstra b566cad1f2 Complete resume workflow interpreter 2022-08-10 20:49:30 +02:00
Sipke Schoorstra dd217c7e8b Incremental work on jobs as activities 2022-08-10 16:02:53 +02:00
Sipke Schoorstra 4ed7f4b5da
Designer Activity Definitions (#3221)
* Incremental work on custom activities

* Incremental work on refactoring versioned entities

* Add ActivityDefinition infrastructure

* Incremental work on activity definition manager

* Incremental work on API endpoints

* Refactored flowchart component to include hierarchical nav

* Incremental work on modularization of designer component

* Restructuring into modules

* Rename CustomActivities module

* Apply security

* Fix activity definition GET endpoint

* Incremental work on activity definition provider

* Incremental work on activity definition execution

* Update ActivityDefinitionMaterializer.cs

* Update ActivityDefinitionActivityProvider.cs

* Add activity definition referenced version update handler

* Maintain position of not found activity

* Fix prefix naming
2022-07-21 16:18:42 +02:00
Sipke Schoorstra dfa1068012 Remove unused namespaces 2022-07-07 22:30:44 +02:00
Sipke Schoorstra 20002e2454 Introduce ActivityBase 2022-06-29 15:36:27 +02:00
Sipke Schoorstra 168f07e64b Fixed page loading of workflow journal 2022-06-27 13:26:46 +02:00
Sipke Schoorstra 4ac74864cd Incremental work on transposition 2022-06-14 15:56:41 +02:00
Sipke Schoorstra d5826c7fd0 Update Event activity and trigger API 2022-06-09 20:06:31 +02:00
Sipke Schoorstra 2cfd9abd15 Incremental work on journal 2022-06-09 18:48:43 +02:00
Sipke Schoorstra f93a051a14 Implement storage driver API endpoint 2022-06-07 15:48:52 +02:00
Sipke Schoorstra e67e40bd7b Incremental work on persistent variables 2022-06-06 15:49:54 +02:00
Sipke Schoorstra 951149b5d4 Improve memory API 2022-06-04 20:01:20 +02:00
Sipke Schoorstra a28d2eb63a
Features API (#3081)
* Rename module and features

* Move Mediator, AspNetCore and Expressions to modules folder

* Update labels-widget.tsx
2022-05-27 12:36:39 +02:00
Sipke Schoorstra fccf4737e2
V3 modular configuration (#3070)
* Restructuring (WIP)

* Fix warnings

* Move DSL to modules

* Update namespaces

* Make design factory base reusable

* Update service registrations

* Remove unused namespaces and rename ElsaDbContext

* Incremental work on migrations

* Generate WorkflowsDbContext SQLite migrations

* Rename ServiceCollectionExtensions

* Update DbContextOptionsBuilderExtensions.cs

* Restructure

* Configuration refactorings (WIP)

* Incremental work on configurator API

* Incremental work on configuration API

* Incremental work on configuration API

* Fix workflow runtime options

* Move standard stream providers

* Implement configurator dependencies

* Cleanup configurator API

* Update configurator dependencies

* Cleanup

* Update Label API endpoints

* Fix eager configuration issue
2022-05-26 12:47:31 +02:00