Commit Graph

15684 Commits

Author SHA1 Message Date
Jan Jakes
f443992f81 Mark workflow runs with errors as failed
[MAILPOET-4055]
2022-03-14 09:36:21 +01:00
Jan Jakes
0d990e1b18 Clean Action Scheduler data in automation migrator reset
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
3a22521a55 Add json encode/decode wrapper class
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
5ed10c256a Add button to create a testing workflow
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
999381e580 Add random ID generator for workflow steps
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
8e8e6ec1ec Use content-type application/json by default
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
01de03608d Make api request configurable at call time
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
fc16bacadc Add "core" automation integration & implement wait action
The "core" integration will provide triggers, actions, and subjects
that are not specific to any 3rd party integration.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
f7866aab49 Initialize MailPoet integration for automation
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
3006804f11 Move automation engine initialization to init hook
We need to initialize it later so that automation integration
initialization hooks can be registered first.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
8eb30f4509 Pass segment and subscriber subjects with segment subscribed trigger
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
0e32a215f3 Add MailPoet subscriber subject
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
832ad3a898 Add MailPoet segment subject
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
87a8538912 Add basic MailPoet automation integration with segment subscribed trigger
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
86d934ba36 Add hook for segment subscription
This will be used for a "SegmentSubscribed" trigger for automation
that can trigger welcome emails and other actions.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
716050b7de Save subject data in workflow runs
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
50b889a1bd Add workflow data subject & field interfaces
A subject contains multiple fields. Each field has a type and they
can be filtered and used later on.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
d9d7df0b84 Add column for workflow data subjects
Data subjects will carry the data through a workflow.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
b62bc21849 Enqueue next step or complete workflow in step runner
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
ac04ade359 Implement action step runner
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
a7cd2b74b4 Fetch workflow, workflow run, and step in workflow step runner
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
66eaf555b5 Catch all errors in step runner
Action Scheduler handles only exceptions, not other errors.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
0c8c86c0a8 Add basic workflow step runner service
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
4a8f37172a Enqueue next workflow step in trigger handler
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
6d040571aa Add simple Action Scheduler wrapper service
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
e4b09ab6de Create new workflow run in trigger handler
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
b88e310f7e Add storage service for workflow runs & create workflow run method
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
a191c691f5 Add hook and basic handler for automation triggers
For now trigger keys are stored in the workflow as a JSON array.
This is not optimal in case someone has many workflows but as
workflows are user-created it's unlinkely someone will have thousands
of them. We can consider adding a workflow_triggers table as well.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
933ee0c8c8 Call "registerHooks" method for all triggers of all active workflows
This is needed so the triggers actually work – their hooks need to be
registered when the triggers are in some active workflows.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
55a25427fc Add initialize hook to register automation integrations
Those need to be registered after Automation engine is initialized.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
634cd11af9 Add automation integration interface
An integration is a set of triggers, actions, subjects, etc.
(E.g. "MailPoet integration".)

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
db21cfa8a5 Add registry service for workflow triggers and actions
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
c97476e8c3 Add controller to create workflows via REST API
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
41cb2c4034 Add storage service for workflows & create workflow method
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
97ad4cffb5 Add interface for workflow actions
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
ee6cdeceab Add interface for workflow triggers
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
bc1b27a53b Add workflow run data object
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
37b2c29eab Add workflow run table
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
b742a394b2 Add workflow step data definition
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
3e6a4fd557 Add workflow data object and an empty step object
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
020309e916 Add status and trigger keys workflow columns
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
5a5c11cbbe Rename workflow data column to steps
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
a08aaabc55 Fix 'deleted_at' column not being nullable
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
a3198a6a87 Fix passing args to WordPress hook
[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
da2621230d Move automation engine code under "Engine" namespace
This is to separate the engine itself from "integrations" that will be
built on top of the engine.

[MAILPOET-4136]
2022-03-14 09:36:21 +01:00
Jan Jakes
4c4e5c7f60 Run PHPStan in pre-commit hooks
This needs to be wrapped in the bash -c shell to ignore parameters
carrying changed file names that are automatically being passed
from lint-staged. PHPStan uses cache so this is not needed and
unknown parameters make the command fail.

[MAILPOET-4055]
2022-03-09 14:11:03 +01:00
Jan Jakes
66243f246b Allow PHPStan cache
[MAILPOET-4055]
2022-03-09 14:11:03 +01:00
Jan Jakes
ce3a8bed8c Fix errors detected by updated PHPStan
[MAILPOET-4055]
2022-03-09 14:11:03 +01:00
Jan Jakes
1bc004adce Update PHPStan
[MAILPOET-4055]
2022-03-09 14:11:03 +01:00
John Oleksowicz
fa91951484 Release 3.84.0 2022-03-09 12:36:05 +02:00