Commit graph

98 commits

Author SHA1 Message Date
Sipke Schoorstra cad624c85f Remove StringObjectDictionaryConverter and update JintJavaScriptEvaluator
The StringObjectDictionaryConverter class was removed as it is no longer necessary. Instead, the JintJavaScriptEvaluator now wraps objects in ObjectWrapper instances and sets their prototype to Array.prototype if they are array-like. This allows for more convenient and intuitive use of Lists and arrays in JavaScript code within Elsa. A new integration test was created to validate this functionality.
2024-01-31 19:48:00 +01:00
Sipke Schoorstra 1e1abfa100 Add support for list/array conversion in JavaScript evaluator
A StringObjectDictionaryConverter has been added, which converts all IList fields of an object to array fields. This enhances the interaction of JS expressions with list types, allowing common Array methods to be applied directly. Furthermore, defaults have been added to the ExpressionEvaluatorOptions parameters to improve usability. Lastly, adjustments were made to ensure variables are correctly set while evaluating expressions.
2024-01-30 21:22:32 +01:00
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 6a36cbd6a3 Add ExpressionEvaluatorOptions to JavaScriptEvaluator
The JavaScriptEvaluator now accepts an options parameter of type ExpressionEvaluatorOptions. This allows adding custom arguments to the evaluation context. An 'Empty' static instance of ExpressionEvaluatorOptions is added for convenience. Additionally, the usage of MassTransitAzureServiceBus in Program.cs is turned off by setting the flag to 'false'.
2023-12-14 10:45:37 +01:00
Sipke Schoorstra 6ff6cc6826 Refactor expression descriptors and remove unnecessary async calls
This commit refactors how expression descriptors are created and retrieved across Elsa project. The asynchronous methods have been simplified to synchronous ones removing unnecessary `ValueTask` returns. Additionally, `IExpressionDescriptorRegistryPopulator` has been removed resulting in less complexity and better performance.
2023-12-10 21:43:24 +01:00
Sipke Schoorstra faf8fd1df6
Enhanced ObjectConverter to Return JsonObject Instead of JsonElement (#4686)
* Incremental work

* Refactor code for JSON object handling and workflow context

This commit includes a significant rework of JSON object handling by ensuring produced JsonObject remains as JsonObject. Previously unimplemented customer and order workflow context providers have been removed. The test cases have been renamed and updated to confirm the new behavior is working as expected.
2023-12-08 20:57:07 +01:00
Sipke Schoorstra 683f0ee6d8
Add Bulk Dispatch Workflow activity (#4683)
* Initial version of BulkDispatchWorkflow

* Update comments

* Refactor options models for running workflows and add Properties

* Fix resumption

* Add ability to provide arguments when evaluating expressions

* Update args syntax for JS

* Fix ProtoActor Runtime Properties mapping

* Use default constructor

* Provide completed workflow instance ID as input to BulkDispatchWorkflows

* Implement ChildFaulted port

* Switch to Publish to make Memory service bus work

* Update input evaluation and activity output retrieval

Refined the input evaluation process to only consider inputs with AutoEvaluate set to true. Added a comment to clarify the purpose of the GetActivitiesWithOutputs method. Removed the unnecessary check for AutoEvaluate from the EvaluateInputPropertyAsync method.
2023-12-06 22:32:08 +01:00
Sipke Schoorstra bec8cbc322
Target .NET 8 (#4660) 2023-11-27 11:26:16 +01:00
Sipke Schoorstra e4d6ad22c4
Decouple Expression Types (#4622)
* Refactor Expressions model

* Enable expression type filtering

* Implement dynamic enablement of satelite dependencies
2023-11-14 20:44:42 +01:00
jdevillard 1b48305418
Enhancement/runtime options provider#4491 (#4614)
* add Endpoint to fetch data from options provider

* add Api Client Contract

* add context object in Endpoint

* Update Api Client Contract for Context

---------

Co-authored-by: Jérémie DEVILLARD <jdevillard@users.noreply.github.com>
2023-11-09 13:01:51 +01:00
Sipke Schoorstra f8e0f20296
Add Python Expression support (#4600)
* Scaffold Python project

* Add Workflow Variable accessor

* Add RunPython activity

* Add option to register scripts via options
2023-11-04 18:15:56 +01:00
Sipke Schoorstra 5d1a1aaf86
Add C# expression support (#4594)
* Initial version of c# expressions

* Add support for strongly-typed workflow variable accessors

* Fix type casting

* Rename c# to C# in XML comments

* Rename Globals.Context to ExecutionContext and Variables to Context

* Move RunJavaScript activity to Elsa.JavaScript

* Add RunCSharp activity

* Add CSharpOptions

* Add common workflow properties and methods
2023-11-03 20:28:10 +01:00
Sipke Schoorstra 02ec4c2391
Include NodeId for unique addressability within graph (#4575)
* Leverage ActivityNode for graph querying

* Make workflow definition activity Root port non-browsable

* Update Join activity

* Make NodeId first-class citizen
2023-10-25 22:46:06 +02:00
Sipke Schoorstra 2f2fb467a0 Update getInput JS function to also consider parent workflow input 2023-10-22 22:03:48 +02:00
Sipke Schoorstra e6d4d73564 Update JS to lookup activity output by activity name 2023-10-20 09:09:11 +02:00
Sipke Schoorstra 4f50850a1e
Capture activity state (#4530) 2023-10-13 10:34:21 +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 bf5de06799 Update Jint package 2023-09-28 13:38:19 +02:00
Sipke Schoorstra 7485c5dfcb Cleanup 2023-09-06 22:04:58 +02:00
Sipke Schoorstra 69744bd63c Fix naming collision between workflow input and activity input 2023-09-06 13:50:08 +02:00
Sipke Schoorstra 46c9a76259 Move input accessors to Jint service to control order 2023-08-22 14:59:31 +02:00
Sipke Schoorstra 7ad3da2c2a Minor cleanup 2023-08-14 14:47:35 +02:00
Sipke Schoorstra 811827c393 Fix unintended attempt to convert dictionary to array 2023-08-14 14:38:33 +02:00
Sipke Schoorstra ebc585b11a Restore getGuidString and getShortGuid functions and deprecate them 2023-08-14 14:34:40 +02:00
Sipke Schoorstra ebd6375f7f Implement workflow inbox cleanup service 2023-08-13 12:31:58 +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 265434b651
Update output selector with support for activity instances (#4307)
* Update output selector with support for activity instances

* Update tests
2023-08-10 00:20:30 +02:00
Sipke Schoorstra 62ae3b1f6e
Add ability to push variables to scheduled work (#4306) 2023-08-09 22:35:44 +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 cd5c7fbb1b Use correct output name identifiers based on workflow tool version 2023-08-02 22:52:02 +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 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 f0814f4f64
Fixes the issue with httpendoint not being suspended #4143 (#4171)
* Fixes the issue with httpendoint not being suspended #4143

* Simplify HttpEndpoint and bookmark processor

* Fix issue with null workflow state ID

* Remove implicit instalment of EF Core provider for Trigger and Bookmark store

---------

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-06-28 20:55:57 +02:00
gurkanguran 07b6aedbec
Fixed the issue with setVariable execution in javascript activity (#4158)
* Fixed the issue with setVariable execution in javascript activity
2023-06-24 00:12:01 +02:00
Sipke Schoorstra 9d073a6c7a Ensure activities have identities when generating typescript definitions 2023-06-18 22:21:20 +02:00
Sipke Schoorstra 04fe32cabb
Implement activity output APIs (#4119) 2023-06-09 22:10:56 +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 6f455f7e70
Update DSL implementation and integration (#4073) 2023-05-28 11:54:12 +02:00
Sipke Schoorstra 6d15c536f3 Make activity input property options provider async 2023-05-21 10:11:16 +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 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 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 cebf6f12e3 Add integration test for reading composite activity output 2023-03-24 22:25:48 +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 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
herblinernexxbizz 95ca326133
Features/v3 add short and full guid (#3800)
* add full guid and shortguid as javascript/jint functions with intellisense

* add guid as string and rename other method
2023-03-15 12:29:07 +01:00