Sipke Schoorstra
3138c33903
Add JObject type conversion handling
2021-04-15 14:39:31 +02:00
Sipke Schoorstra
59aba78133
Formatting
2021-04-14 20:21:11 +02:00
jdevillard
0062585709
return object if it is already the good type
2021-04-09 22:24:53 +02:00
Sipke Schoorstra
ce957b95e7
Cleanup
2021-04-07 13:13:13 +02:00
Craig Fowler
8e16f5f269
Related to #761 - Refactor complex conversion
...
This removes all of the (now actually non-trivial) conversion logic from
the class which is actually responsible for executing the Jint engine.
This moves it all to a new service which uses chain of responsibility to
convert the result, using one of a few different mechanisms.
Of note is the handling of ExpandoObject when no specific type
information has been provided, and also the handling of enumerables,
with the exception of strings.
2021-04-01 20:25:09 +02:00
Craig Fowler
4b5d86135d
Follow-up #761 - Fix for recursive case
...
Unfortunately Jint still chokes in this case if the expando contains
further nested expandos. It turns out that I need to do this
recursively for it to always work.
We also have trouble with IEnumerable types. They also can't be
round-tripped from/to JSON when they aren't deserialized as a very
specific type.
2021-04-01 20:25:09 +02:00
Craig Fowler
7ed875e53c
Resolve #761 - Add special-case for ExpandoObject
...
It appears that this can be fixed by intercepting occasions
when Jint returns an ExpandoObject but the desired return type
is simply object. In this scenario we must return
a Dictionary<string,object> instead of a simple object, or else
Jint freaks out should we try to stringify it later.
I also added a second test to prove that making this change hasn't
broken the way we expect Jint to work for us.
2021-04-01 20:25:09 +02:00
Craig Fowler
a7f8926698
WIP #761 - Experimental commit (no exception)
...
This is an experimental commit. It does stop the exception from
occurring, but it doesn't really fix the problem because now the
output is always empty-object.
It does prove that the exception was occurring because of the
usage of JsonConvert to serialize/deserialize the result.
The change made in this commit probably can't go into prod
but it is useful because it llustrates a part of the problem.
2021-04-01 20:25:09 +02:00
Sipke Schoorstra
63aef00415
Fix type cast issue when evaluating JS expressions with no specialized type
2021-03-19 12:21:04 +01:00
Sipke Schoorstra
0c15c94ea7
Telnyx Activities ( #768 )
...
* Fix liquid syntax for accessing activity output
* Initial scaffolding of Telnyx module + API changes
* Make Telnyx Notification activity blocking
* Implement Telnyx correlation
* Post workflow suspension tasks improvements
* Add Telnyx activities
* Add HangupCall and TransferCall activities
* Call activity improvements
2021-03-17 13:07:14 +01:00
Sipke Schoorstra
94d71c54f3
JavaScript engine type conversion improvements
2021-03-11 22:51:29 +01:00
Sipke Schoorstra
d7d7bd4a7e
Add RunJavaScript activity
2021-03-06 13:41:52 +01:00
Sipke Schoorstra
6eadac5736
Improve javascript engine
2021-03-04 17:45:59 +01:00
Sipke Schoorstra
9e31439802
Fix JavaScriptExpressionHandler string conversion
2021-03-04 17:45:59 +01:00
Sipke Schoorstra
a14f7cc267
Expressions editor ( #695 )
...
* A functioning monaco editor
* Incremental work on intellisense
* Add Workflow Context Options settings to designer
* Rudimentary work on variables
2021-03-02 09:00:51 +01:00
Sipke Schoorstra
03c9f94671
Improve specifications and YesSQL implementation ( #529 )
...
* Update Fluid.Core package
* Make specifications flexible
* Update build environment
* Disable global.json
2020-12-20 12:12:32 +01:00
Sipke Schoorstra
f8662c5426
Implement workflow materializer
2020-10-17 16:45:20 +02:00
Sipke Schoorstra
7a7d032e9e
Remove unused namespaces
2020-10-11 14:33:56 +02:00
Sipke Schoorstra
1a85fc5f26
Implement in-memory provider
2020-10-10 21:10:09 +02:00
Sipke Schoorstra
e1f5b6a8a5
Implement YesSql
2020-10-10 17:13:52 +02:00
Sipke Schoorstra
899f12e35f
Cleanup and apply new field naming convention
2020-10-09 19:52:54 +02:00
Sipke Schoorstra
c542a5a531
Merge branch 'develop' into feature/elsa-2.0
...
# Conflicts:
# src/activities/Elsa.Activities.ControlFlow/Activities/ForEach.cs
# src/core/Elsa.Abstractions/Extensions/WorkflowExtensions.cs
# src/core/Elsa.Abstractions/Models/WorkflowInstance.cs
# src/core/Elsa.Core/Expressions/LiteralEvaluator.cs
# src/dashboard/Elsa.Dashboard/Extensions/DashboardServiceCollectionExtensions.cs
# src/dashboard/Elsa.Dashboard/Theme/argon-dashboard/package-lock.json
# src/dashboard/Elsa.Dashboard/Theme/argon-dashboard/package.json
# src/persistence/Elsa.Persistence.DocumentDb/Extensions/ServiceConfigurationExtensions.cs
# src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs
# src/persistence/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/MySqlContextModelSnapshot.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/20200402200706_Update01.Designer.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/MySql/20200402200706_Update01.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/20200402200555_Update01.Designer.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/PostgreSql/20200402200555_Update01.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/20200402200549_Update01.Designer.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/SqlServer/20200402200549_Update01.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/20200402200519_Update01.Designer.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/20200402200519_Update01.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Migrations/Sqlite/SqliteContextModelSnapshot.cs
# src/samples/Sample24/Program.cs
# src/scripting/Elsa.Scripting.JavaScript/Services/JavaScriptHandler.cs
2020-04-17 20:34:39 +02:00
Sipke Schoorstra
8ec43230a7
Improve JS value converter to support object target type
2020-02-20 21:24:34 +01:00
Sipke Schoorstra
60bfb4e7b2
Added Graphql ( #246 )
...
* Added GraphQL using Hot Chocolate
2020-02-15 20:32:16 +01:00
Sipke Schoorstra
aefe630f42
Merge branch 'develop' into feature/elsa-2.0
...
# Conflicts:
# Samples.sln
# src/core/Elsa.Abstractions/Elsa.Abstractions.csproj
# src/core/Elsa.Core/Elsa.Core.csproj
# src/persistence/Elsa.Persistence.EntityFrameworkCore/Extensions/EFCoreServiceCollectionExtensions.cs
# src/providers/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj
# src/providers/Elsa.Persistence.YesSql/DbContexts/DesignTimeDbContextFactoryBase.cs
# src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContext.cs
# src/providers/Elsa.Persistence.YesSql/DbContexts/MySqlContextFactory.cs
# src/providers/Elsa.Persistence.YesSql/Elsa.Persistence.YesSql.csproj
# src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.Designer.cs
# src/providers/Elsa.Persistence.YesSql/Migrations/MySql/20200113102615_InitialCreate.cs
# src/providers/Elsa.Persistence.YesSql/Migrations/MySql/MySqlContextModelSnapshot.cs
# src/samples/Elsa.Samples.Timers/Elsa.Samples.Timers.csproj
# src/samples/Sample05/Program.cs
# src/samples/Sample08/Sample08.csproj
# src/samples/Sample08/Startup.cs
# src/samples/Sample14/Program.cs
# src/samples/Sample14/Sample14.csproj
# src/samples/Sample16/Sample16.csproj
# src/samples/Sample18/Program.cs
# src/samples/Sample18/Sample18.csproj
# src/samples/Sample19/Sample19.csproj
# src/samples/Sample19/Startup.cs
# src/samples/Sample21/Sample21.csproj
# src/samples/Sample21/Startup.cs
# src/samples/Sample22/Program.cs
# src/samples/Sample22/Sample22.csproj
# src/samples/Sample23/Program.cs
# src/samples/Sample23/Sample23.csproj
2020-01-16 21:23:45 +01:00
Sipke Schoorstra
7b94637386
Code-first improvements ( #223 )
...
* Refactor workflow model and scheduler
* Improve workflow builder API
2020-01-12 20:15:57 +01:00
Sipke Schoorstra
1338dc0a95
Container Activities ( #218 )
...
* Add support for child activities.
* Add type map feature.
* Update While, For and ForEach activities
2019-12-28 10:56:12 +01:00
Sipke Schoorstra
8092d166a5
Add native .NET code support + activity input/output ( #216 )
...
* Add code activity
* Refactor Workflow State to use Variables
* Update InstantEvent and SetVariable
* Update samples
* Add activity input/output
2019-12-23 21:43:11 +01:00
James Doran
9556b80016
Add script options configuration ( #179 )
2019-11-21 21:09:58 +10:30
James Doran
6714308558
JavaScriptExpresionEvaluator now takes into account the target type when performing conversion ( #185 )
2019-11-19 08:42:28 +01:00
Peter Davis
bbfbba53ce
Fix issue with property expressions throwing invalid cast exceptions ( #173 )
...
Expression was returning the JValue of the property and was unable to convert to a string.
2019-11-18 08:07:33 +01:00
Sipke Schoorstra
21f770bc48
Refactorings and fixes ( #168 )
...
* Variables are now stored including their type name for automatic deserialization into their actual type. This is important for use in expressions.
* **SplitObject** and **ExecuteMethod** now use workflow expressions instead of variable names. This allows for more flexibility.
* Improved **Join** activity to allow proper function within looping constructs.
* Improved Variables performance. Variables are no longer serialized/deserialized upon writing/reading perspectively, only when the workflow instance is persisted.
2019-11-17 20:43:16 +01:00
Sipke Schoorstra
f9af5e71d6
Improve expression evaluation ( #133 )
...
* Add test case for object-to-string target type
* Add exception handling
2019-11-06 21:11:16 +01:00
Sipke Schoorstra
57f116c239
Fix object disposed bug ( #116 )
...
* Refactor buggy SignalRequestHandler
For some reason, the following code is problematic:
await DecryptToken()
.BindAsync(GetWorkflowInstanceAsync)
.BindAsync(CheckIfExecutingAsync)
.MapAsync(ResumeWorkflowAsync);
Basically, any lambda in the BindAsync and MapAsync could execute even after the containing method returned
* Implement better message handler registration without adding multiple IMediator services
* Abstracted Mediator service registration methods.
* Add Liquid support for JObject.
2019-10-31 21:31:18 +01:00
Sipke Schoorstra
aef8741d84
Add Liquid expressions ( #111 )
...
* Reorganize projects
* Implement Liquid expression evaluator
* Refactor activity references to use `Name`
2019-10-27 15:38:37 +01:00