Skip to content

Instantly share code, notes, and snippets.

View geomagilles's full-sized avatar

Gilles Barbier geomagilles

View GitHub Profile
@geomagilles
geomagilles / example.py
Last active October 13, 2017 10:03
Python example of workflow implementation using Zenaton
class OrderWorkflow(Workflow):
def __init__(self, item, address):
self.item = item
self.address = address
def handle(self):
self.execute(PrepareOrder(self.item))
event = self.execute(Wait(OrderPreparedEvent))
self.execute(SendOrder(event.id, self.item, self.address))
var { Workflow } = require("zenaton");
var GetPriceFromProviderA = require("./GetPriceFromProviderA");
var GetPriceFromProviderB = require("./GetPriceFromProviderB");
var GetPriceFromProviderC = require("./GetPriceFromProviderC");
var OrderFromProviderA = require("./OrderFromProviderA");
var OrderFromProviderB = require("./OrderFromProviderB");
var OrderFromProviderC = require("./OrderFromProviderC");
module.exports = Workflow("OrderWorkflow", function() {
var { Workflow } = require("zenaton");
var TaskA = require("./TaskA");
var TaskB = require("./TaskB");
module.exports = Workflow("SequentialWorkflow", function() {
new TaskA().execute();
new TaskB().execute();
});
new OrderWorkflow({ item: “item_ref” }).dispatch();
var { Workflow, Wait } = require("zenaton");
var SendMyBeautfulEmail1 = require("./SendMyBeautfulEmail1");
var SendMyBeautfulEmail2 = require("./SendMyBeautfulEmail2");
var SendMyBeautfulEmail3 = require("./SendMyBeautfulEmail3");
module.exports = Workflow("WelcomeEmailSerie", function() {
new SendMyBeautfulEmail1(this.email).execute();
new Wait().days(3).execute();
new SendMyBeautfulEmail2(this.email).execute()
new Wait().days(3).execute();
var { Workflow, Wait } = require("zenaton");
var SendMyBeautfulEmail1 = require("./SendMyBeautfulEmail1");
var SendMyBeautfulEmail2 = require("./SendMyBeautfulEmail2");
var SendMyBeautfulEmail3 = require("./SendMyBeautfulEmail3");
module.exports = Workflow("WelcomeEmailSerie_v1", function() {
new SendMyBeautfulEmail1(this.email).execute();
new Wait().monday().at('08:00').execute();
new SendMyBeautfulEmail2(this.email).execute()
new Wait().monday().at('08:00').execute();
var { Version } = require("zenaton");
var WelcomeEmailSerie_v0 = require("./WelcomeEmailSerie_v0");
var WelcomeEmailSerie_v1 = require("./WelcomeEmailSerie_v1");
module.exports = Version("WelcomeEmailSerie", [
WelcomeEmailSerie_v0,
WelcomeEmailSerie_v1
]);
var { Workflow, Wait } = require("zenaton");
var SendMyBeautfulEmail1 = require("./SendMyBeautfulEmail1");
var SendMyBeautfulEmail2 = require("./SendMyBeautfulEmail2");
var SendMyBeautfulEmail3 = require("./SendMyBeautfulEmail3");
var SendMyBeautfulEmail4 = require("./SendMyBeautfulEmail4");
var SendMyBeautfulEmail5 = require("./SendMyBeautfulEmail5");
var SendMyBeautfulEmail6 = require("./SendMyBeautfulEmail6");
module.exports = Workflow("WelcomeEmailSerie_v2", {
handle() {
<?php
use Zenaton\Interfaces\WorkflowInterface;
use Zenaton\Traits\Zenatonable;
use Zenaton\Tasks\Wait;
class NotifyEtaWorkflow implements WorkflowInterface
{
use Zenatonable;
// inform user # seconds before ETA
<?php
use Zenaton\Interfaces\EventInterface;
class EtaUpdatedEvent implements EventInterface
{
public $eta;
public function __construct($eta)
{