* Added PostgreSql support to Elsa.Persistence.EntityFrameworkCore via Npgsql.
* Customize Elsa.Persistence.EntityFrameworkCore Migrations and Schema.
* Added Context factory in Sample23 to use the IDbContextCustomSchema.
* Refactor the Custom Schema support to use the EFCore IDbContextOptionsExtension.
* 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
* WorkflowInstanceIndex now stores records correctly
* Saving a workflow instance now updates existing instance rather than creating a new document
* Fixed serialisation exception when saving existing instance containing NodaTime types
* 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.
* Correlate messages to workflow instances
Looks like it is really important to correlate masstransit messages to workflow instances. I have updated the demo to show this as I ran a few in parallel and several errors were occurring.
* Use concurrent dictionary for memory instance store
* Fix issue #134 where consumer could not be created
* Fix issue where message was null in ReceiveMassTransitMessage
input variables are case sensitive
* Add simple test script to execute the workflow
* Add message type as input from consumer
* Allow passwords to be specified in amqp URI