Commit graph

75 commits

Author SHA1 Message Date
Craig Fowler f34409696d
Should resolve #653 - Reinstate tests in CI process for v2 branch (#658)
* WIP #653 - Delete two tests

These two couldn't easily be fixed, in both cases they were
integration tests which involved passing through many classes.
It wasn't immediately clear what needed to be done to fix them.

As noted in the issue description, removing them was an
acceptable fix.

* WIP #653 - Fix a failing test

I split this test into two.  Per the discussion at:
  https://github.com/xunit/xunit/issues/350
XUnit seems quite opinonated about not having assertion messages.
Thus, without changing assertion library (which deserves discussion
before I just do it), the logical next best thing is to split into two
single-assert tests, so it's clear which assertion failed on a test
failure.

Also, I moved the AutoMoqData attribute to the shared test lib, so
that it can be used anywhere.  That allowed me to eliminate the
constructor for this test class, except for initialising the base class.

* Provisionally resolve #653 - reinstate tests in CI

This should complete the issue although we need to see a
passing CI build with this code change before we can say
it's done.

* Provisionally resolves #653 - Add test script
2021-02-25 09:24:00 +01:00
Craig Fowler b583c7f1a9
Resolves #485 - Add PurgeVariables functionality (#654)
* Trivial - Add VS Code workspace

* Trivial - Add VSCode build task & extra ignore

On GNU/Linux, auto-generated .directory
files should be ignored.

* WIP #485 - Boilerplate for unit test project

* WIP #485 - Add test coverage (Remove/RemoveAll)

* WIP #485 - Implement RemoveAll

* Remove redundant logic, covered by IDictionary

Per the following, the contract for a generic IDictionary,
the Remove method already deals with non-existent keys.

  https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2.remove?view=net-5.0#System_Collections_Generic_IDictionary_2_Remove__0_

* Resolve #485 - Add PurgeVariables methods

These are convenience methods upon ActivityExecutionContext
and WorkflowExecutionContext, consistent with their current APIs.

Also in this commit are tests for those simple methods.
There's a bit of test-scaffold as well included, such as:
* Autofixture Xunit2 integration
* New project for unit tests
* Customize attribute for avoiding crashes on Autofixture recursion
* Reusable specimen builder for creating IServiceProvider which
  resolves services from Autofixture
* Custonize attribute for a parameter to use that ^^ specimen builder
2021-02-24 14:29:03 +01:00
Sipke Schoorstra f048e6d3ef
Refactor Switch builder API (#649)
* Refactor Switch builder API

* Remove unused namespaces
2021-02-20 20:47:56 +01:00
Sipke Schoorstra 0bf3fecf18 Rename IfElse to If 2021-02-20 15:56:32 +01:00
Sipke Schoorstra 86980a752e
Designer web component (#636)
* Activity picker dialog

* Activity picker

* Activity editor

* Activity property fields

* Blazor bindings for Elsa designer

* Only index triggers from published & enabled workflow definitions

* Handle case of null workflow blueprint not found

* Add check for zero duration and general scheduler exceptions

* Don't rethrow expression evaluation failure

* Workflow definition settings editor modal

* Integration between stencil and blazor 🎉

* Fix expression type conversion

* Add publish button and restructure components

* Fix up workflow definition ID vs workflow definition version ID

* Update EF Core migrations

* Fix Workflow Publisher

* Fix version display

* Add Import menu item
2021-02-16 09:55:13 +01:00
Sipke Schoorstra a02147d2ee Fix Finish + CompositeActivity 2021-02-13 11:16:20 +01:00
Sipke Schoorstra 7cfe24ba94
Implement revival of faulted workflow (#595)
* Initial version of workflow reviver

* Fix DI things

* Rename workflow builder parameter to `builder`

* Update EF Core stores to use short-lived db contexts

* Update serializer to use new settings to reset ID seed

* Write fault details

* Add faulty workflows sample project

* Switch to free & open source Z.EntityFramework.Plus.EFCore

* Add content type header

* Fix call to virtual OnSaving/OnLoading

* Fix retry
2021-01-30 12:47:50 +01:00
Sipke Schoorstra 59189bd330
Revise trigger API (#593)
* Update triggers

* Fix service registrations

* Add support for startup task ordering

* Add missing Rebus Activities project

* Handle indexing of many workflow instances

* Update sample

* Separate bookmarks from start triggers

* Add trigger API

* Fix queue worker

* Delete sqlite temp files
2021-01-29 16:16:45 +01:00
Sipke Schoorstra e6f42aca8f Update packages 2021-01-21 12:45:10 +01:00
Sipke Schoorstra fcfe7f08b4 Change For/While/ForEach/IfElse behavior
Before this change, the aforementioned activities would always schedule the Done outcome.
After this change, the Done outcome is scheduled **after** the Iterate branch and True or False branches have completed
2021-01-12 09:28:48 +01:00
Sipke Schoorstra 020e74e7bc Use shared Iterate outcome const 2021-01-03 19:22:17 +01:00
Sipke Schoorstra 993e08ea89
Refactored Switch Activity (#545)
* Add IfThen activity + sample

* Add match mode

* Rename IfThen to Switch
2020-12-29 16:40:21 +01:00
Sipke Schoorstra 5f08df0556 Add Dashboard samples: monolith + client/server 2020-12-27 11:53:52 +01:00
Sipke Schoorstra fa13aadd37 Serialization improvements and cleanup 2020-12-26 14:37:05 +01:00
Sipke Schoorstra 310cab9032
Elsa Activity + Workflow registration refactorings (#543)
* Elsa options and activity/workflow registration improvements

* Add convenience extensions for Quartz and Hangfire timer activity registration

* Fix solution and warnings
2020-12-26 12:21:08 +01:00
Sipke Schoorstra 28ac92b6ff
Introduce Workflow Instance Name (#538)
* Add Name property to Workflow Instance models and update Dashboard UI

* Add SetName activity

* Add naming workflow sample

* Add modal html

* Implement search by workflow instance name
2020-12-24 14:30:55 +01:00
Sipke Schoorstra 8078e7bccc Disable tests due to removed ExecutionLog 2020-12-20 20:20:36 +01:00
Sipke Schoorstra c047d66942 Update packages 2020-12-19 15:35:11 +01:00
Sipke Schoorstra d41039b567 Rename extensions namespace 2020-12-18 11:35:29 +01:00
Sipke Schoorstra c7b21d294b Fix version (for AppVeyor) and apply common.props to shared test package 2020-12-17 16:05:37 +01:00
Sipke Schoorstra d6cc7d7f56
Implement Specification pattern (#517)
* Add specifications

* Update persistence providers with specification pattern
2020-12-14 17:15:39 +01:00
Sipke Schoorstra f2aae986f4 Use in-memory persistence by default 2020-12-12 14:07:17 +01:00
Rafael Carnucci 3b35d9ff0a
Seperate YesSql (#504)
* Seperate YesSql and added InMemory, MongoDb

* Error fixed, if DatabaseInitializer is run through several times

* icon.png was not packed

* Added AddWorkflowProvider to AddElsaPersistenceMongoDb

* Wrong primary keys were used for MongoDb

* Refactorig MongoDb

* Register IMongoCollection<WorkflowDefinition> and IMongoCollection<WorkflowInstance> with DI

* Wrong Parameter Type in Constructor (MongoDbWorkflowInstanceRepository)

* Add workflowDefinition.WorkflowDefinitionId = _idGenerator.Generate(); to Initialize

* Removed duplicated code

* Correct wrong Commit

Co-authored-by: Rafael Carnucci <rafael.carnucci@icn.de>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2020-12-11 21:03:49 +01:00
Sipke Schoorstra 0ee07636c3 Update YesSQL packages 2020-12-04 12:11:45 +01:00
Sipke Schoorstra 0facd8f93f
Introduce activity type providers (#480)
* Add activity type provider API

* Rename ReceiveHttpRequest to HttpRequestReceived
2020-11-30 15:21:36 +01:00
Sipke Schoorstra 41ca351d29
Refactor Timers activities using Quartz & initial Multitenancy support (#477)
* Refactor time based events using Quartz.net

* Simplify Quartz job & trigger registration & Cleanup

* Expose Quartz configuration

* Restructure samples
2020-11-27 21:47:51 +01:00
Sipke Schoorstra 2d54b7e337 Add Rebus activities 2020-11-19 22:21:17 +01:00
Sipke Schoorstra fee41d1932 Implement auto-save 2020-11-19 15:14:39 +01:00
Sipke Schoorstra 757fde7e6e Update packages and incremental work on API 2020-11-18 22:31:16 +01:00
Sipke Schoorstra 0038702dd8 Fix gRPC serialization 2020-11-14 17:46:25 +01:00
Sipke Schoorstra be92fe7d74 Incremental work on activity picker fetching activities from Elsa server using gRPC 2020-11-14 15:44:03 +01:00
Sipke Schoorstra 8be781d1e8 Add Activities API client 2020-11-13 21:30:07 +01:00
Sipke Schoorstra c75196f696 Add component tests 2020-11-13 20:47:08 +01:00
Sipke Schoorstra 0c5bdf27a7 Incremental work on API client 2020-11-13 15:30:23 +01:00
Sipke Schoorstra def637b4ca Update packages 2020-11-12 22:02:51 +01:00
Sipke Schoorstra d31ef98bb1 Update to .NET 5 and update icon 2020-11-11 21:32:12 +01:00
Sipke Schoorstra 3a9eaeb799 fix Signal activities, triggers and add sample 2020-11-03 16:58:00 +01:00
Sipke Schoorstra 60357d1950 Update package references 2020-11-03 11:29:02 +01:00
Sipke Schoorstra 7f44bfe4c1 Replace precompiled queries with extensions, process warnings and fix test 2020-11-03 10:50:32 +01:00
Sipke Schoorstra 38470c0176 WIP: Declarative composite activities 2020-11-02 21:04:41 +01:00
Sipke Schoorstra 594853d45c Add Composite Activity support 2020-11-01 20:03:21 +01:00
Sipke Schoorstra ae40d36c72 Fix Instant event behavior 2020-10-30 16:16:06 +01:00
Sipke Schoorstra 3700bb2323 Update package projects 2020-10-29 09:30:43 +01:00
Sipke Schoorstra 6755002f51 Add file/blob storage-based provider + test 2020-10-23 14:20:52 +02:00
Sipke Schoorstra 7d77e501f6 Fix While activity + add test 2020-10-23 14:00:10 +02:00
Sipke Schoorstra bc4924e57b Add Switch extensions + tests 2020-10-23 13:46:34 +02:00
Sipke Schoorstra f8e4cd1e6c Add IfElse extensions + tests 2020-10-23 13:20:22 +02:00
Sipke Schoorstra a4d7713ae7 Fix Join activity 2020-10-23 12:40:33 +02:00
Sipke Schoorstra 7c807c4e71 Fix Join behavior 2020-10-22 22:38:05 +02:00
Sipke Schoorstra 9663040c31 Rename Complete activity to Finish and add test 2020-10-22 20:34:12 +02:00