Added extensible support for specialized primitive handling such as
DateTime and NodaTime primitives.
This fixes the issue where a Variable is serialized using a primitive's
string representation and losing the target type, which is needed for
reconstructing the type upon deserialization.
* Explicitly specify identity for Id columns
This fixes an issue where EF Core 2.2 does not set Identity = Yes when
defining the Id columns.
* Fix DateTime serialization issue
This change fixes an issue by taking over the serialization of a DateTime value.
The problem with serializing a DateTime value as-is is that upon deserialization, the JToken type would be set as String instead of Date.
This is because NodaTime disables automatic date time handling for Instant types.
However that causes an issue when trying to serialize and deserialize DateTime values.
This change explicitly tests for DateTime values and handles it appropriately.
A future improvement might be to make this TypeNameHandlingConverter class extensible by implementing a provider-based model,
enabling developers to take control over how certain types are serialized.
* GetVariable<T> now uses Convert.ChangeType
Fixes issue where saving an Int32, serialising and deserialising, then accessing with GetVariable<int>(...) no longer causes type cast exception.
The saved value is a JValue which treats Int32 as Int64. Convert.ChangeType has a better chance of performing conversion without error.
Also returns default of T if the variable isn't found.
* Added SetVariable overload in Variables
To prevent double-wrapping objects in more than 1 Variable object
* 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.
* 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.
* Fix many things. Few more samples left to fix
* Fix all the samples
* Introduce service configurator
* Implement cache signaling and refreshing workflow registry
* Add Sample16 demonstrating dashboard + workflow host combined
* Bugfix where non-published versions of worklows are triggered
* Fix StringValues serialization and rename WorkflowDefinition to WorkflowDefinitionVersion
* Fix Singleton issue and add support for absolute URL using base URL for background tasks
* Fix persistence and lifetime scope issues
* Fix timer bugs
* Various bug fixes