Commit graph

80 commits

Author SHA1 Message Date
jdevillard 9175322774
Add a more generic UIHandler to customize how inputAttributes can be handle by UI (#4688)
* add a more generic UIHandler to customize how inputAttributes can be handle by the ui

* Add IPropertyUIHandlerResolver and update PropertyUIHandlerResolver

Introduced a new interface, IPropertyUIHandlerResolver, to resolve UI options for a property. Refactored PropertyUIHandlerResolver to implement this interface and removed the unnecessary partial class structure. Also, cleaned up some unnecessary usings in various files for better code organization.

* Refactor variable name and description in InputDescriptor

The 'uISpecifications' variable in the InputDescriptor model is renamed to 'uiSpecifications' for better readability. Additionally, the associated comment was revised to explain that the dictionary is used by the UI.

* "Refactor codebase for improved organization and cleaner architecture"

The codebase has been significantly refactored, moving several classes to more appropriate namespaces for improved organization and cleaner architecture. This includes shifting UI hint handlers, activities, and memory-related components, amongst others. The changes should improve code readability and maintainability, but as this is a broad refactoring effort, thorough regression testing is advised.

* Add CheckList UIHint with associated handler and provider

This update introduces a new UIHint called CheckList to the Elsa.Workflows.Core. This includes the necessary handler and provider classes. The handler is registered in the WorkflowsFeature.cs, and the CheckList UIHint key has been added to the InputUIHints.cs. Various associated files have been created in both the Elsa.Api.Client and Elsa.Workflows.Core project to support this new UIHint.

---------

Co-authored-by: Jérémie DEVILLARD <jdevillard@users.noreply.github.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-12-26 18:56:29 +01:00
Sipke Schoorstra 14d7ec18d6 Handle user-usage of $id key in JSON objects 2023-11-23 20:30:58 +01:00
Sipke Schoorstra 225a99f39d
Bulk Import + Export of Workflow Definitions and Instances (#4643)
* Implement bulk export of workflow definitions

* Update Import endpoint with support for file uploads

* Update Import endpoint to return imported workflow count

* Implement workflow instance (bulk) export

* Implement workflow state, bookmark, workflow + activity execution export

* Remove globally imported usings
2023-11-22 14:31:48 +01:00
Nokecy 4056434e45
fix: fix hashSet deserialize error (#4545)
* update hangfire version to 1.8.5

* fix: fix hashSet deserialize error

* fix: replace HashSet to ISet<T>

* Update polymorphic converter and tests

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-10-17 23:14:40 +02:00
Sipke Schoorstra 523f301bf7
Feature: Alterations (#4501)
* Implement Alteration types and engine

* Implement Alteration APIs

* Refactor activity work item with support for activity input

* Serialize scheduled activities as part of workflow state

* Add signal to schedule child activity

* Implement stores for plans and jobs

* Add EF Core provider

* Add Retry endpoint

* Keep root context as always active. The root context is the workflow execution context and contains persistent variable state

* Regenerate EF Core migrations

* Handle orphaned activity execution contexts

* Refactor workflow execution factory

* Enable configuring Jint from Program

* Update ModifyVariable alteration with support for type deserialization

* Use ShortGuid for identity

* Cleanup WorkflowServer host
2023-10-07 12:47:36 +02:00
Sipke Schoorstra fc14cfb7b0
Exclude Activity from being serialized in instance and execution log (#4464) 2023-09-21 18:09:48 +02:00
Sipke Schoorstra 45d194125d
Remove WorkflowStateStore (#4374)
* Remove WorkflowStateStore and use WorkflowInstanceStore instead

* Delete RunningWorkflows actor

* Cleanup
2023-08-30 15:42:16 +02:00
Sipke Schoorstra a30ac939ee
Refactor safe serializer (#4361) 2023-08-24 13:15:28 +02:00
Sipke Schoorstra 48b2e29b00
Refactor activity state serializer (#4357) 2023-08-23 21:57:10 +02:00
Sipke Schoorstra a02bacbbde
Support serialization of non(de)serializable values (#4356) 2023-08-23 20:56:12 +02:00
Sipke Schoorstra 10533131e3 Add fault information to journal 2023-08-21 22:45:56 +02:00
Sipke Schoorstra 776e3c141b Revert PolymorphicObjectConverter changes 2023-08-21 11:10:11 +02:00
Sipke Schoorstra 1eaaecd132 Fall back to JsonObject
When deserialization dails due to the target type not being deserializable, return a JsonObject instead. This enable e.g. ActivityExecutionLogRecord to store JSON information for ActivityState, which does not need to be reconstructed into the original type. An improvement could be considered to store activity execution log record activity state in a non-polymorphic structure in the first place.
2023-08-21 11:00:21 +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 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
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
Sipke Schoorstra 5848db1f37 Remove $id exclusion from ExpandoObjectConverter 2023-05-11 11:17:16 +02:00
Sipke Schoorstra e799381001 Ensure ExpandoObject array properties are deserialized as arrays
This also enables the use of jint's isArray method to return true, since the object is now an actual array.
2023-05-10 13:57:44 +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 5b84f264c3 Update polymorphic converter to stop trying to parse string into date time offset 2023-05-03 10:35:58 +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 920bf38308 Fix type converter for array types 2023-05-01 15:18:24 +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 a67361c6ae Fix variable type serialization 2023-04-28 14:31:38 +02:00
herblinernexxbizz a0bdf45851
Features/fix serialization issues (#3966)
* run locally

* commit created test

* updated test

* Island

* Commented code

* creating tests

* upodate tests

* revert

* create working tests

* fix test roundtrip Jobject

* update tests

* finish tests

* create branch without getdefinition by keys

* move test files add @

* Special properties deserialization test

* refactor tests make it shorter

* clean PolymorphicObjectConverter

* rename properties

* Escape keys starting with reserved symbols

* Fix fix of converter

* Add newline normalization

* Minor cleanup and handling nullability warnings

* compact tests

---------

Co-authored-by: Marius Vasile Vușcan <marius.vuscan@nexxbiz.io>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-04-28 10:29:06 +02:00
Sipke Schoorstra 10c5d0c848 Fix serialization bug and update AllInOne reference app with support for webhooks 2023-04-24 13:44:34 +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 b53ef86128 Update serializer to support Newtonsoft JObject "islands" 2023-04-20 15:11:45 +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 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 218860c998 Update custom converter with support for additional "primitive" types 2023-04-06 15:06:13 +02:00
Sipke Schoorstra b76442859b Fix handling of sequence type serialization 2023-03-24 11:11:56 +01:00
gurkanguran e4789cf85b
Reference variable with Id instead of Name to prevent issues with updating name (#3814)
* Implemented Id property for variable for memory reference

* Removed debugger

* Fixed the issue with memory block reference of variable

* Fixed infinite recursive calling issue

* Handle variables with ID already containing

* Update JS variable getters based on declared variables

* Prevent Export from including composite roots

* Update JS evaluator with support for reading and writing variables in scope

* Fix polymorphic converter with support for arrays

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-03-22 22:50:26 +01:00
Sipke Schoorstra 8289b03f79 Fix JSON serialization issues 2023-03-22 19:28:38 +01:00
Sipke Schoorstra 9f3d654cbc Update JSON property dictionary serialization to maintain original .NET types 2023-03-22 12:19:23 +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 625da40e34 Fix ExpandoObjectConverter array serialization for non-complex values 2023-03-09 11:35:03 +01:00
Sipke Schoorstra c5f35c81fc Fix variable with generic type serialization 2023-03-09 11:02:07 +01:00
Sipke Schoorstra ccfbc47c71 Fix default variable value serialization issue 2023-03-08 21:43:47 +01:00
Sipke Schoorstra 7ba4dc5039 Add support for controlling when to serialize properties of type IActivity 2023-03-08 01:03:01 +01:00
Sipke Schoorstra e6ce1cebb3 Stash 2023-03-08 00:31:51 +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
Sipke Schoorstra b1564bf646
HTTP Request with status codes as outcomes (#3768)
* Implement configurable expected status outcomes on HTTP Request activity

* Add Catch all outcome

* Implement dynamic port update
2023-03-07 13:45:58 +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 4f5bc70bd4 Fix ExpandoObjectConverter 2023-01-23 15:57:07 +01:00
Sipke Schoorstra 28e9922060
JavaScript intellisense (#3639)
* Incremental work

* Incremental work

* Incremental work

* Initial support for intellisense

* Implement variable type definition provider
2023-01-19 14:09:58 +01:00