►
From YouTube: Elsa workflows Community Meeting 36
Description
Elsa workflows Community Meeting 36
- Orchard Harvest 2023
- Orchard Core
Register here for the Orchard Harvest conference for FREE to watch my talk on Elsa Workflows: https://orchardcore.net/harvest
A
B
A
Great
so
I
just
have
two
topics
which
has
to
do
with
what
I've
been
working
on
this
week.
The
week
before
this
week,
I've
been
mostly
working
on
the
the
dashboard
application
and
I
recorded
that
session,
and
it's
it's
on
there.
If
you
want
to
take
a
look
so
for
this
session,
I
was
thinking
maybe
to
discuss
what
I've
been
working
on
for
the
past
week,
which
is
in
preparation
for
my
upcoming
talk
on
Orchard
Harvest.
A
For
those
who
don't
know
which
Harvest
is
a
conference
organized
by
The
Orchard
community
and
for
those
who
don't
know
what
Orchard
is.
Let's
take
a
look:
it's
an
open
source
application
framework.
Let's
see
if
they
have
description
here,
they
have
a
list
of
features
and
Dimension
media
management
to
manage
media
types.
A
They
have
multilingual
support,
it's
a
modular
framework
multi-tenant,
it
has
security
and
it
has
workflows-
and
this
is
this
is
the
reason
actually
why
I'm
attending
or
doing
a
talk
at
the
orchard
Harvest
conference,
which,
by
the
way
is
next
week
on
Wednesday.
My
talk
will
be
I,
think
it
was
8,
P.M
UTC,
and
the
reason
for
that,
for
the
talk
is,
is
that
Elsa
has
its
roots
in
Orchard
core,
so
Orchard
core
has
this
workflows?
A
Module
and
I
basically
took
that
code
and
made
it
in
to
turn
it
into
a
reusable
class
library
that
has
no
dependencies
and
Orchards
so
that
you
could
use
it
in
other
applications
without
also
having
to
have
a
dependency
on
the
rest
of
Orchard
core,
which
is
a
pretty
vast
framework.
It
has
a
lot
of
stuff
in
it.
You
may
not
always
want
to
use
that.
Have
you
ever
heard
of
it?
Muhammad.
B
Yes,
I
think
because
I
started
with
elsa1
and
I
think
that
was
a
really
inspired
or
they
reported
maybe
from
our
chart.
Yeah
yeah
I
came
to
know
about
Elsa
from
N7
times
and
I.
Remember
that
you,
you
mentioned
the
description
as
well,
but
it
is,
it
is
coming
directly
or
you
know.
Inspired
from
here.
That's.
A
Right
yeah,
indeed,
Elsa
one
was
a
direct
port
in
terms
of
the
underlying
workflow
engine,
the
the
runner
that
logic
and
even
the
designer
in
terms
of
UI.
It
was
using
the
same
Library
which
is
DS,
plump
and
yeah.
It
was.
It
was
a
direct
copy.
The
main
difference
at
that
point,
I
think
was
the
the
UI
was
implemented
as
a
as
a
spa
using
stencil
I.
A
Think
already
at
that
point,
and
of
course,
the
workflow
designer
in
Orchard
it's
using
gisplump
and
jQuery,
and
it's
it
uses
data,
it's
not
implemented
as
a
spa,
and
actually
that
this
is
what
what
I
wanted
to
do
during
this
session
as
well,
is
just
give
a
little
bit
of
a
demo
of
of
Orchard
core
what
it
looks
like
what
you
can
do
with
it
and
also
take
a
look
at
the
workflows
module
which
I
think
might
be
interesting
before
we
go
there.
A
Let
me
Link
in
case
people
want
to
attend
the
orchard
Harvest
conference,
it's
free,
it's
online,
so
you
can
register
for
free.
It's
it's.
As
I
mentioned
it's
online.
It
happens
on
teams.
So
if
you
want
you
can
file
include
the
link
in
the
in
the
description.
These
are
the
speakers,
including
myself.
Here
this
is
the
program,
so
we
start
with
a
keynote
from
Sebastian
he's.
The
is
a
tour
contributor
and
for
the
past
more
than
10
years,
probably
already
he's
the
main
developer
of
Orchard,
starting
with
Orchard
one
and
Orchard
two.
A
Is
we
never
call
it
Orchid
two?
We
call
it
Orchard
core,
because
it's
a
re-implementation
from
original
Orchard
of
the
pre-asp
net,
core
time
frame
that
was
ported
to
using
asp.net
core,
hence
the
name
Orchard
core,
and
then
we
have
multi-tenancy
a
talk
about
multi-tenancy
using
words
of
framework
QA
automation
by
sorry,
I'm
blanking
on
his
name.
But
it's
it's
such
a
I
know
him
well,
I
used
to
know
him
very
well.
I
met
him
in
person.
His
name
is
Sultan
he's
a
he's.
A
A
great
guy
he's
he's
very,
very
smart
and
he's
the
founder
of
or
the
co-founder
of
long
beak,
and
they
they
specialize
in
Orchard
consultancy
and
they
they
are
big
contributors
to
the
Orchard
Court
project.
So
here's
a
talk
about
a
real
world
implementation
of
forces.
Core,
it's
going
to
be
interesting,
some
breakout
sessions
in
the
afternoon
and
then
localization
and
e-commerce
module,
and
this
my
understanding
is
that
the
orchard
core
Commerce
module
is
it
was
it's
mentioned
here.
A
A
That
would
be
fun
to
see
him
there
as
well,
but
we
will
see
and
then
my
talk,
that's
the
last
one
about
Elsa
workflows
and
my
plan
is
to
talk
a
little
bit
about
the
history
of
elsao,
where
it
came
from
and
then
describe
a
little
bit
what
it
would
take,
what
it
takes
to
take
the
orchard
core
workflows,
module
and
make
it
you
know
reusable
and
Standalone
and
then
and
look
a
little
bit
at
the
the
comparison,
so
the
similarities
between
Orchard,
core
workflows
and
Elsa
workflows,
but
also
the
differences
yeah.
A
That's
basically
my
talk
so
yeah.
If
you're
interested
you're
welcome
to
join.
It
will
be
next
week
on
Wednesday
at
8,
05
PM
UTC.
So,
let's,
let's
take
a
look
at
it
at
Orchard
Court,
so
so
they
have
documentation,
they
have
forum.
Here
you
can
download
this
version.
The
latest
version
and
the
source
code
is
on
GitHub
and
I
have
also
a
weekly
podcast
that
which
is
the
weekly
community
meeting,
which
happens
on
Tuesday,
which
is
also
free
for
anyone
to
to
join.
A
It
also
happens
on
teams
yeah,
let's
just
get
it
running,
I
already
have
it
open
in
writer,
and
what
I
have
here
in
writer
just
to
walk
you
through
it
quickly?
It's
just
a
a
regular
ASP
Network
project.
So
there's
nothing
much
to
it.
It's
just
an
asp,
a
net
core
project
created
using
the
empty
template.
So
it
gives
you
just
app
settings
and
a
program
CS
file,
and
this
is
what
it
looks
like
to
to
start
using
portrait
core.
A
Of
course
you
need
to
reference
some
of
the
packages,
so
they
have
an
application,
CMS
targets,
packets,
which
is
like
a
bundle
packets
that
brings
in
some
of
the
other
necessary
dependencies
I'm
using
a
custom
logging
implementation
using
Siri
log
and
a
custom
module.
So
Orchard
core,
it's
a
it's
a
modular
framework
and
the
idea
is
to
extend
its
functionalities.
A
You
create
modules
yourself,
so
in
a
module
is
typically
just
a
class
library
or
maybe
a
Razer
class
Library
I,
don't
know
actually
I
think
this
one
is
yeah,
it's
a
Razer
class
library,
but
we'll
look
into
this
a
little
later
yeah.
So
the
only
packets
you
need
for
Orchard
is.
Is
this
one
which
brings
in
CMS
capability
these
as
well
and
then
to
use
it?
Use,
you
just
say,
add:
Orchard
CMS:
this
is
optional.
A
I,
don't
think
you
need
setup
features
I,
don't
think
you
need
Auto
setup,
which
I
think
I
have
no
I
haven't
tried
it,
but
for
my
what
I've
understood
from
the
forums
is,
if
you
wanted
to
automate
Orchard
setup
using
a
some
some
build
pipeline,
maybe
or
some
some
just
some
scripting-
you
need
this.
One
it's
it's
here:
I
copied
it
in
from
documentation,
then
you
build
a
web
application
and
you
start
the
or
Square
middleware
pipeline,
so
very
simple
to
look
at
the
you
know
for
minimum
setup
of
orchards.
A
So
with
that
in
place,
I
can
oh
I've
already
started
the
solution,
so
I
should
be
able
to
just
click
on
this
link.
The
first
thing
we'll
see,
is
a
setup
screen,
so
this
comes
from
the
I
think
the
setup
module
in
Orchard
and
what
it
will
do.
It
will
create
a
default
tenant
so
which
is
multi-tenant,
and
by
default
it
will
create
a
default
tenant
which
I
think
they
call
Shell.
A
So
here,
let's
say
or
shared
demo.
They
have
this
notion
of
recipes,
which
is
very
powerful
because
it
allows
you
to
basically
take
an
entire
configuration
of
an
orchard
installation
and
put
it
in
a
a
file
called
a
recipe
which
is
a
Json
formatted
file,
and
it
allows
you
to
well
pre-configure
a
site.
Let's
say
you're,
creating
a
product
portfolio
website
or
an
e-commerce
website,
doesn't
matter
or
blog
website,
and
you
have
it
configured
in
a
certain
way.
You
can
export
it
as
a
recipe,
take
adjustments
as
you
as
you
need
and
then
reuse
it.
A
So
if
you,
if
you
want
to
then
replicate
that
website
and
and
with
different
databases,
because
you
want
to
create
different
blog
posts
or
or
create
other
content,
you
don't
have
to
recreate
the
configuration
yourself.
You
can
just
use
this
recipe,
so
here
we
could
use
maybe
to
block
a
recipe.
Then
we
can
specify
the
database
provider,
so
their
orm
is
yes
SQL,
which
is
like
a
nosql
database
but
implemented
using
SQL
or
relational
databases
using
a
library
called
yes
SQL,
which
is
also
created
by
Sebastian.
A
This
guy
he's
a
developer
at
Microsoft,
and
this
is
the
benevolent
dictator
of
Orchard
core,
all
right
so
for
username
to
admin
all
right
that
didn't
work.
Let
me
try
again
all
right
so
setup
is
completed.
We
now
have
a
basic
block
website,
so
we
have
a
home
page.
That's
this
one
and
we
have
an
about
base
all
right.
So
let's
go
to
the
the
back
end.
That's
always
admin
all
right.
So
here
we
are
in
the
in
the
back
end.
So,
let's
explore
a
little
bit
depth
dark
mode.
A
First
thing
we
see
is
a
thing
called
blog,
so
this
is
like
a
this
is
a
list
of
all
of
your
blog
posts
within
a
Blog
and
the
one
of
the
most
powerful
features
of
orchards
is
the
it's
capability
to
construct
content
types
from
building
blocks
called
content
parts?
So
almost
every
every
bit
of
content
in
Orchard
is
is
a
Content
item
that
that
has
a
content
type
which
is
similar
to
let's
say
a
class.
A
If
you
have
a
class
that
will
be
a
content
type
and
then
a
Content
item
would
be
an
instance
of
that
class.
So
here
we
have
content
types
are
called
article
blog
Etc,
but
they
are
composed
of
content
parts.
So
if
we
look
at
the
content
type
definitions,
we-
and
we
take
a
look
at-
let's
say
what
page,
for
example,
we'll
edit
this
one.
So
it
has
the
title
part
and
other
route
part
the
flow
part
and
the
page
part,
and
the
page
part
I
think
is
an
implicit
part.
A
That
is
more
it's
it's
used
as
a
placeholder
for
adding
Fields.
So
there's
a
third
layer
called
content
fields
and
these
parts
title
Auto,
Rod
and
flow-
are
the
reusable
parts.
So
you
can
create
other
types
that
reuse
the
same
same
parts,
so
they
are
like
plugable
bits
of
functionality.
Here
of
the
this
Blog,
the
content
type,
you
see
the
same
parts,
we
see
title
outer
routes
here
we
see
different
particles,
HTML
body
and
a
list
behavior,
so
a
Content
part
brings
in
a
set
of
data,
but
also
some
Behavior.
A
So
it
basically
turns
your
content
type
into
something
well,
depending
on
the
parts
that
you
attach
all
right.
So
let's
go
back
to
the
blog
here.
So
here
we
have
a
Content
item
of
type
blog
posts,
and
what
we'll
see
here
is
the
the
title
part
renders
this
title
inputs.
So
as
you
can
see,
it's
very
modular.
The
permalink
field
comes
from
the
outer
out.
Parts
markdown
body
comes
from
probably
the
probably
there's
a
markdown
part
or
something
yeah.
So
there's
a
markdown
body
part
which
provides
this
input
here.
A
Subtitle
I
think
is
a
a
Fields,
probably
on
the
blog
post.
So
if
we
look
at
okay,
so
here
we
see
the
fields
and
I
think
technically
these
fields
are
attached
to
this
blog
post.
So
this
is
like
an
implicit
part.
That's
based
on
the
the
content
type
itself
and
it's
just
a
more
of
a
container
to
to
be
able
to
add
fields
to
it.
So
here
we
see
the
subtitle,
Fields,
Banner
image,
tags
and
category
which
we
see
here
as
well
tags,
category,
Banner
image
and
speaking
of
category.
This
is
the
unusing.
A
A
taxonomy
Fields,
as
you
can
see
here
and
taxonomies,
are
like
categories,
but
it's
hierarchical.
So
you
can
go
multiple
levels
deep
and
you
can
reuse
that
functionality
for
well
more
or
less
tagging
your
content
in
in
advanced
ways
which
can
also
allow
you
to
to
filter
content
items
by
a
given
taxonomy
term.
So
it's
a
it's
quite
extensible
and
flexible,
and
it's
rich
in
in
functionality
like
that
all
right.
So
here
we
look
at
so
here
we
looked
at
blog.
So
this
is
a
Content
item.
A
But
if
we
want
to
see
all
content
items,
we
can
go
to
kind
of
names,
and
then
we
see
all
of
those
items
and
another
feature
of
Orchard
is
the
ability
to
customize
this
menu.
So
this
is
somehow
configured
somewhere.
That
shows
just
content
items
of
type
blog,
all
right
so
media
library
here.
So
this
allows
you
to
upload
images
and
then
use
it
in
content.
Items
main
menu
is
what
is
used
on
the
front
end.
A
So
if
we
go
to
the
front
end
here,
no,
oh
here
like
this,
this
is
the
main
menu
which
brings
me
to
the
next
topic.
There's
a
well
in
in
Orchard.
You
have
modules,
but
you
also
have
themes
and
themes
are
similar
to
modules,
but
they
are
specialized
in
in
the
sense
that
they
provide
the
Razer
files
or
the
liquid
files
or
Sports
liquid
as
well
to
provide
the
front-end
UI.
A
So
everything
that
you
see
here
can
be
completely
customized
and
in
the
way
it
works,
is
you
create
a
project
or
you
use
an
existing
theme
which
is
a
nuget
packets,
and
then
you
can
customize
it
thanks
to
an
advanced
Concept
in
Orchard
called
shapes,
a
shape,
basically
being
a
a
view
model
combined
with
a
template
name.
So
if
you,
if
you
render
a
shape,
it
has
all
of
the
metadata
necessary
to
to
display
itself,
which
is
so
allows
for
very
flexible
composable
UI
rendering
in
order
I
mentioned
modularity.
A
So
let's
take
a
look
at
the
features.
So
in
this
this
configuration
section
called
features.
We
see
all
of
the
features
exposed
to
the
system
and
these
features
they
come
from
modules
and,
as
I
mentioned,
the
module
is
just
a
class
library
and
and
that
module
has
a
manifest
and
it
Manifest.
This
is
a
c-sharp
file
that
has
some
some
data
or
some
some
attributes.
Let's
take
a
look
in
a
an
example
here,
so
here
I
have
a
custom
module.
A
So
it's
a
good
way
to
to
look
at
the
Manifest
here
of
this
module,
at
least
so
it
uses
assembly
attributes
to
provide
some
metadata
about
this
module.
So
this
one
is
called
Elsa
workflows.
So
if
we
filter
on
also
workflows,
this
is
the
name
of
the
the
category
and
then
the
features
and
as
I
as
you
can
see
here
in
this
manifest
I
expose
three
features.
A
One
is
like
a
just
a
workflows
feature:
let's
just
select
the
the
default
or
implicit
feature
of
the
module
and
then
there's
a
different
feature
called
contents
which
provides
additional
functionality
to
the
system.
If
this
feature
is
enabled
and
what's
so
powerful
about
the
way
these
features
work.
Let's,
let's
talk
a
little
bit
about
dependency
injection,
for
example,
so
here
are
features
called
content
notice,
the
startup
class.
This
startup
is
not
an
asp
net
core
startup
class,
but
it's
it's.
A
It's
like
a
a
plug-in
startup
class,
so
you
have
the
main
startup
class
in
your
application,
of
course,
or
I'll,
not
the
startup
here,
but
in
this
case
just
program.
What
Orchard
will
do
it
will
invoke
each
startup
class
of
its
enabled
feature.
A
So
here
you
can
see
it's
annotated
with
the
feature
attribute
and
the
name
of
the
feature,
so
this
name
matches
the
name
in
the
Manifest,
which
is
this
one
here,
and
so,
if
that
feature
is
enabled
through
this
UI
here,
so
if
I
would
enable
this
one,
what
happens
is
that
this
startup
class
will
execute.
So
at
that
point
the
the
shell
will
be
restarted
and
then
each
startup
class
will
be
invoked,
registering
the
the
necessary
services
that
are
used
here
so
here,
for
example,
a
content
type
options
provider
is
being
registered.
A
The
this
content,
Handler
Etc,
so
very,
very
modular,
very
extensible
in
this
way
yeah.
So
that
was
an
example
of
a
in
this
case
a
custom
feature
through
a
custom
module.
But,
as
you
can
see,
there's
there's
many
more
features.
There's
a
big
list
of
features,
there's
deployments
development
stuff
stuff
for
distributed
hosting
Elsa
workflows,
which
is
my
custom
module,
which
will
dig
into
a
little
bit
deeper
in
a
minute
open,
ID,
that's
another,
quite
powerful
module.
That's
provided
out
of
the
box.
A
A
So
this
allows
you
to
very
easily
and
quickly
set
up
and
open
ID
connect
identity
server
if
you
want
to
as
both
as
a
server
but
also
as
a
consumer.
So
it's
it's
just
there
just
for
free,
which
is
pretty
awesome.
Let's
see
what
else
messaging
email,
Microsoft
authentication
is
just
one
of
the
providers
for
this
open,
ID
connect
feature
I
mentioned
auto
route,
that's
a
feature
that
allows
you
to
attach
or
make
content
items
routable.
So
we
thought
we
looked
at
the
one
of
the
content
items
called
well
here.
A
We
have
a
blog
post
with
a
permalink
of
this
and
that
allows
you
to
to
two
routes
to
a
container.
So,
as
you
can
see
here,
this
is
the
same
URL,
and
this
is
the
content
item
being
displayed
and
it's
tagged
with
these
tags
navigation
over
the
connect.
We
mentioned
this
one
performance
feature,
so
you
can
make
worksheet
even
faster
just
by
enabling
these
features,
search
which
uses
leucine,
which
is
what
elasticsearch
also
uses.
A
So
if
you
have,
if
you
use
elasticsearch
under
the
internally,
my
understanding
is
that
uses
leucine,
but
you
can
also
use
leucine,
for.net,
directly,
audit
rail
course,
the
social
security
stuff,
of
course
users.
It
has
roles
and
uses
that
you
can
manage
so
here.
Of
course,
we
have
the
administrator
and
rules
and
for
each
row
you
can
specify
its
its
permissions.
So
that's
that's.
What
it
looks
like
here
so
in
any
module
can
contribute
to
the
set
of
permissions
that
you
can
then
assign
to
a
given
role.
So
pretty
big
list
usage.
A
This
looks
like
this.
So
very,
very
simple.
You
have
username
email
this
by
the
way
comes
from
at
least
last
time.
I
checked
comes
from,
say,
content
particles,
user
part,
so
the
user
part
provides
this
UI
I
think
this
is
the
roles
part
at
least
that
used
to
be
the
case.
It
might
have
changed,
but
in
principle
and
and
I
I
might
be
wrong.
A
Just
as
a
as
a
disclaimer,
it's
been
a
while
since
I
actually
looked
at
it,
but
at
some
point
at
least
in
order
to
one
users
were
also
content
items,
and
that
means
you
can
extend
with
custom
parts
but
again
I,
don't
know
if
that's
still
the
case,
I
believe
I.
Remember
at
some
point.
A
There
was
some
discussion:
if
it's,
if
it
should
remain
a
Content
item
or
not,
we
would
have
to
look
into
the
code
to
to
be
sure,
but
I
wouldn't
be
surprised
if
there
is
at
least
some
way
to
extend
a
user
with
stuff
like
a
profile
theming,
it's
enabled.
So
this
should
mean
we
should
be
able
to
change
the
theme
to
something
else
so
see.
If,
if
I
remember
how
general
settings
admin
menus,
okay,
so
on
the
recipes,
we
can
run
existing
recipes.
These
are
not
set
up
recipes,
but
these
are
recipes.
A
You
can
execute
after
you
set
up
a
a
tenant,
and
so
here
there's
an
easy
way
to
enable
elasticsears
query
whatever
that
means,
and
it
seems
like
we
currently
only
have
one
available
or
maybe
I
think
I'm
confused.
So
this
is
the
block
thing
that
I
enabled
which
brings
in
these
recipes,
but
this
is
not
the
way
to
change
the
theme
figure
out
from
where
design.
What
about
this?
One
themes
all
right.
This
is
better.
This
is
the
current
admin
theme.
A
As
far
as
I
know,
that's
the
only
ethnic
theme
that
exists
today
for
the
front
end.
This
is
the
current
site
theme,
so
they
have
make
a
distinction
between
admin,
themes
and
site
themes,
which
is
for
the
front
end
like
this.
So
here
they
have
a
different
theme
called
the
18
1860
theme
and
the
coming
soon
theme,
and
we
should
be
able
to
just
switch
to
it.
A
So
now,
if
we
go
to
the
front
end
and
refresh
nothing
to
see
here,
what
do
you
see
on
the
home
page?
So
clearly,
this
theme
wasn't
designed
for
blog
posts.
As
you
can
see,
it's
using
some
default
rendering
this
doesn't
look
too
good.
Let's
try
the
agency
theme
all
right,
so
it
has
home
and
about,
but
as
you
can
see
the
the
parts,
the
fields
they
aren't.
The
theme
isn't
designed
for
for
this.
A
These
content
items
and
the
default
theme
here
very
basic
and
aim
little
menu
here
to
go
back
to
the
dashboard.
A
Let's
quickly
change
it
back
to
all
right,
so
this
one
of
course,
is
designed
for
it
content
types
like
block
post,
but
in
any
case
you
can
see
it
has
a
theming
system,
it's
pretty
cool,
but
it
has.
It
has
much
much
more,
but
let's
take
a
look
at
their
not
yet
also
workflows,
but
the
built-in
module
the
workforce
module.
A
So
that's
this
feature
here,
so
we
can
choose
from
the
workflows
module
itself
and
then
some
options
to
enable
timer,
workflows
activities,
session
reflectivities,
which
is
like
I
I,
imagine,
activities
to
to
run
database
queries
and
to
and
this
one
it's
about
HTTP
activities.
Let's
enable
all
of
these
all
right.
So
with
this
enabled
we
now
have
a
new
menu
item
called
workflows.
We
don't
have
any
workflows
yet,
but
let's,
let's
try
one
Let's
do
an
HTTP,
hello
and,
let's
see
so
we
have
enabled.
A
So
that's
that's
actually
pretty
good
feature
which
we
don't
have
in
Elsa,
although
you
could
unpublish
a
workflow
definition
which
is
like
disabling
it.
Maybe
it's
interesting
to
consider
having
an
enabled
disabled
setting
single
instance.
This
is
a
concept
we
also
have
in
elsa3
it's.
It
has
more
than
just
a
single
instance
option.
It
also
has
an
option
to
be
a
like
a
Singleton,
but
across
correlation
IDs,
so
you
can
have
multiple
instances
of
the
same
workflow
as
long
as
the
correlation
ID
is
different.
That
would
be
a
different
strategy
here.
A
It's
just
a
single
instance,
which
translates
to
Singleton
and
Elsa
delete
successfully
completed.
Workflows
is
similar
to
retention
module
in
Elsa,
but
there
you
can
configure
it
from
the
UI,
but
here
you
can
enable
it
straight
from
the
workflow,
which
is
pretty
good,
and
then
there
are
some
advanced
settings
which
has
to
do
with
I
think
distributed
hosting.
So
if
you
host
Orchard
core
in
a
multi-node
environment
and
you
run
workflows,
it
will
acquire
a
distributed.
A
Lock-
and
here
you
can
specify
the
log
timeout
all
right,
so
let's
save
this
one,
and
now
we
are
looking
at
the
designer.
So
what
do
we
see?
Is
we
see
properties
which
brings
us
back
to
this
page,
where
we
can
change
the
name
and
change
the
setting?
So
what
I'm
trying
to
do
is
create
a
workflow
that
implements
a
Content
approval
workflow
and
the
idea
is
for
so.
A
That
turns
this.
That
generates
a
an
absolute
URL
or
maybe
it's
not
absolute
relative,
and
then
you
need
to
do
absolute
URL
like
this,
and
then
it
generates
an
absolute
URL
I
think.
Maybe
it's
not
necessary.
Let's
see
what
the
documentation
says,
yeah
I
think
that's
it.
So
you
need
to
I
think
we
need
to
use
this
one,
but
we
have
a
proof
and
checks
all
right.
So
let's
save
this
workflow
and
create
a
new
blog
post.
A
Of
course,
if
you
were
to
provide
it
or
Grant
access
to
a
contributed
to
the
backend
which
which
is
a
legit
legitimate
use
case
in
Orchard
because
of
its
permission
system,
but
then
you
would
probably
want
to
disable
access
to
the
published
feature
of
content
items
which
I
think
you
can
do
in
Orchard,
but
for
now
we're
going
to
pretend
we
don't
have
the
publish
button.
We're
just
gonna
think
that
we
only
can
save
this
as
a
draft.
A
So
let's
do
that
we
should
have
a
new
email
and
unfortunately,
it
doesn't
show
the
body
at
all.
Maybe
I
made
a
and
an
error.
Maybe
let's
remove
this
one,
because
I
think
if
it
errors
out,
it
will
just
not
render
anything,
but
this
should
be
valid
almost
throughout
well.
This
is
maybe
this
is
the
issue
like
this.
A
Let's
try.
This
again
feel
nothing.
It's!
Let's
remove
this
traffic
roof
signal.
What
happens
if
we
remove
this
one?
Let's
see
I
did
notice
that
here,
oh
no,
it
was
I
I.
It
was
including
an
escape
character
when
I
pasted
it
in,
but
I,
don't
see
it
in
the
documentation.
So
it's
not
supposed
to
be
escaped
well,
let's
give
it
one
more
try.
No,
it
doesn't
doesn't
want
to
display
the
the
URL.
A
B
A
B
A
So,
let's
take
a
look
at
Elsa
workflows
next,
so,
as
I
already
mentioned,
there's
this
I
created
I'm
working
on
a
custom,
Orchard
module
called
also
workflows
and
I'm.
The
the
goal
is
to
have
it
integrate
nicely
into
Orchard.
So
when
you
look
at
Elsa
two
and
three,
it
has
its
own
reusable
web
workflows
designer,
which
also
includes
menu
items
to
browse
word,
for
definitions,
for
example,
but
when
integrating
in
a
dashboard
or
an
application.
Like
word
shirt,
it
makes
more
sense
to
integrate
those
UI
things
into
the
system
itself.
A
So
here
we
have
menu.
Item
called
word
for
definitions
to
manage
word
for
definitions,
so
let's
create
a
new
workflow.
First,
we
are
asked
to
create
a
name
which
is
the
same
way.
It
works
with
the
workflow
built-in
module.
So
when
you
create
a
new
workflow,
it
asks
you
to
provide
an
aim
in
some
settings.
A
I
kept
it
very
simple
for
now,
but
this
of
course,
can
be
extended
with
additional
settings
like
we
have
in
the
lsf3
designer,
including
advanced
settings
if
we
want
to,
but
for
now
we'll
keep
it
simple,
we'll
say:
http
hello,
world
all
right.
So
now
this
this
designer
is
quite
different
from
the
Elsa
one.
Of
course
it
has
a
different
UI
system
for
adding
activities
to
the
to
the
dashboard.
So
here
you
can
drag
and
drop
them
onto
the
design
service.
A
We
have
activity
settings
right
here,
so
it's
it's.
It's
it's
very
different
as
compared
to
the
the
orchard
workflows
designer
and
then
here
we
have
workflow
properties.
So,
let's,
let's
do
the
HTTP
hello
worlds
or
or
maybe
what
we
should
do
is
to
the
the
approval.
Maybe
that's
better
so
here
we
have
content
item
created
if
you've
used
the
new
view
sales,
you
don't
you
don't
you
haven't
seen
any
content.
A
I
have
created
activities,
of
course,
because
that's
very
domain
specific
in
this
case
specific
to
Orchard
and-
and
this
is
this-
is
what
I
want
to
show.
Is
the
integration
between
Elsa
and
and
Orchard
through
well
Orchard
course
extensibility.
So
it
has
very
similar
Concepts
that
we
have
in
outside
and,
as
a
matter
of
fact,
many
Concepts
and
else
I
have
been
adopted
from
Orchard
core.
For
example,
we
have
a
folder
called
the
content
item
created,
which
includes
a
Content
Handler.
A
So
a
Content
Handler
is
like
a
notification
Handler
or
a
mediator
event:
notification
Handler,
although
or
secure,
doesn't
use
mediator
Library.
It
has
its
own
implementation
of
a
similar
concept
and
it
allows
you
to
handle
a
bunch
of
events.
So,
for
example,
whenever
content
gets
created,
you
can
hook
into
that
event
and
do
some
stuff
which
is
perfect
for
Elsa,
because
it
allows
you
and
and
for
the
orchard,
core
workflows
module
for
that
matter.
It
uses
the
same
mechanism
because
it
allows
you
to
listen.
A
For
that
event,
when
a
Content
item
is
created
and
then
trigger
a
workflow
trigger,
so
in
L,
in
this
case,
I'm
triggering
a
custom
activity
called
content
item
created
with.
If
we
look
at
its
implementation,
this
is
a
proper
Elsa
activity
elsa3,
so
it
implements
trigger
and
it
Returns
the
content
item
that
was
created.
A
So
when
it
executes
first,
it
will
see
if,
if
it
was,
if
it
executes
as
a
trigger-
and
if
so
then
it's
going
to
continue
an
extra
execute,
which
does
nothing
more
than
just
getting
the
content
item
that
it
receives
as
an
input
setting
it
as
its
result
and
then
completing
itself.
So
that's
very
basic,
but
if
it's
used
as
a
blocking
activity,
then
it's
gonna.
What's
gonna
do
here?
A
Oh
then
it's
going
to
create
a
bookmark
or
each
of
the
selected
content
types
which
I
didn't
show
the,
because
the
way
this
activity
works
it
allows
you
to
select
which
content
items
you
want
to
filter
on.
So
maybe
you
you
don't
want
to
listen
for
every
content
type,
but
just
for
blog
posts
in
in
this
example,
and
then
the
outputs
you
can
capture
the
content
item
that
was
created
in
a
variable.
A
A
B
A
Then
we're
not
going
to
store
it
in
the
workflow,
because
a
counted
item
could
be.
It
is
serializable
by
the
way,
but
it
could
also
be
a
little
bit
big
and
let's
just
keep
it
in
memory
all
right
and
of
course,
let's
not
forget
to
mark
this
as
a
trigger
and
then
capture
the
created
content
item
here
and
now
we
could
do
the
same
thing.
A
We
wanted
to
do
in
the
other
workflow
in
Orchards,
where
we
send
an
email,
but
for
that
we
need
to
enable
that
feature
if
we
enter
email,
so
I
also
workflows
also
has
an
email
feature
which
we
enable.
Now,
if
you
go
back,
then
we
see
the
send
email
activity
and
this
by
the
way.
This
is
the
send
email
activity
that
comes
from
Elsa
already,
but
because
Orchard
has
its
own
SMTP
service
that
you
that
can
be
configured
from
this
configuration.
A
It
makes
sense
for
this
activity
to
use
Orchards
SMTP
service
and
and
that's
just
to
show
how
how
extensible
and
customizable
else
is
as
well.
We
look
at
the
emails
feature
if
we
look
at
its
startup
class,
so
the
way
it
works
is
it
this
startup
class
from
Orchard
configures
Elsa,
and
then
we
tell
LSAT
to
use
well
email
functionality.
A
So
it
also
also
has
a
concept
of
features,
but
it's
not
quite
the
same
implementation
as
Orchard,
but
conceptually
it's
it's
more
or
less
the
same,
and
it
allows
you
to
overwrite
the
the
factory
that
produces
an
I
SMTP
service,
that's
necessary
by
the
send
email
activity
of
Elsa,
and
here
we
we're
returning
and
wrapping
SMTP
service.
So
the
wrapping
SMTP
service
implements
lsas
ismtp
service
and
internally
it
will
resolve
and
the
the
SMTP
servers
from
Orchards.
A
So
then,
it's
just
gonna
basically
translate
the
my
message
to
a
mail
message,
which
is
what
is
used
by
your
score
and
then
and
then
trying
to
reuse
as
much
as
possible
from
both
Elsa
in
the
case
of
the
activity
and
in
the
case
of
Orchard
the
SMTP
service.
So
here
we're
basically
doing
some
mapping
and
then
invoking
the
orchard
service,
and
this
this
name
is
of
course,
just
an
alias
here,
because
both
Elsa
and
Orchard
used
to
say
isntp
server's
name,
but
they
are
different
types
anyway.
A
So
let's
connect
these
two
and
then
here's
an
email
we
can
say
well,
we
have
similar
Fields.
So
we
have
all
of
these
things.
Here
we
can
say
we
can
use
JavaScript
and
or
liquid.
So
that's
that's
cool.
We
could
say.
Let's
say
please
review
this
new
post.
Then
we
could
say,
get
created,
content
item.
You
see
already
it's
getting
better
with
the
intellisense,
then
we
say
display
text.
So
that's
the
subject
and
then
maybe
also
in
the
body.
It's
published
this
one
and
now,
let's
create
a
new
post.
A
A
A
Let
me
just
do
one
quick
check
with
in
the
database
at
this
point
the
else
the
orchard
workflows
works
better
because
at
least
you
get
an
email
and
where
else
you
don't
even
get
an
email
or
it's
a
core
else
just
to
check
if
we
have
the
trigger
at
least
yeah,
so
at
least
we
have
this
trigger,
so
something
else
seems
to
be
a
Miss.
Let's
see
if
at
least
descends
email
activity
runs,
okay,
just
try
and
create
a
new
content
item.
Okay,
so
at
least
it's
rigorous
being
invoked.
A
Okay
and
then
here
we
do
see.
Oh
I,
remember
this
one!
So
this
this
fails
because
descent
email
activity
isn't
aware
of
the
the
SMTP
settings
configured
in
Orchard,
so
from
is
not
set,
so
it's
just
failing
so
quick
workaround,
of
course,
is
providing
a
from
value
explicitly.
So
let's
just
do
that.
A
B
A
Something
like
that,
something
must
be
off
let's
go
into
here
and
also
we
have
a
wrapped
SMTP
service.
Let's
see
if
we
can
find
its
options
for
2525,
that's
okay
default
sender
network
is
good.
A
It
just
doesn't
seem
to
work
anymore.
A
Oh
for
sure,
yeah,
that's
gonna
save
a
lot
of
time.
All
right.
Let's
try
it
again
with
post
11.
yeah
by
the
way
in
much
Blazer
there's
built-in
validation
in
the
in
the
controls,
which
is
going
to
be
helpful.
B
A
There
we
go
and,
as
you
can
see
the
this
one
works
this.
This
is
probably
because
we
didn't
set
the
body
to
JavaScript
changes
the
job.
Let's
change
that
to
JavaScript
like
this,
creating
another
post,
and
then
this
all
works
and,
of
course,
I
wanted
to
show
the
signal
URL
and
also
three.
We
don't
have
signal
URL
yet,
but
that's
that
has
to
be
added.
A
What
we
do
have
is
things
like
events,
so
we
could
listen
for
an
event
for
you
of
a
given
name,
but
there's
currently
no
way
to
conveniently
generate
some
public
URL.
That
then
triggers
the
event
which
we
do
have
in
Elsa
2
in
the
form
of
signal
received
and
a
JavaScript
function
and
the
liquid
filter
to
generate
a
signal
URL,
and
that
is
something
we
also
have
in
Orchard.
A
But
that's
that's
currently
lacking
in
elsa3
out
of
the
box
at
least
you
can
always
implement
it
through
its
extensibility,
but
it
would
be
good
to
have
it
out
of
the
box
as
well,
and
then
you
can
imagine
waiting
for
approved
and
reject
it
and
then,
depending
on
that,
you
would
have
another
activity.
That's
that's
called
something
like
publish
content
item,
which
you
then
to
the
workflow
and
provided
the
create
a
Content
item
as
an
input
which
would
then
get
published
so
yeah.
That's
that's.
A
Potentially
yes,
but
but
in
in
terms
of
doing
it
from
the
UI.
Let's,
let's
talk
it.
It
is
something
I
I
want
to
be
able
to
do
as
well
from
the
UI,
but
it
would
require
some
plus
some
additional
work
for
sure,
for
example,
the
way
it
works
in
Orchard,
it's
it
has
this.
This
feature
called
shells
and
a
shell.
Is
it's
like
its
own?
A
Well,
it
contains
its
own
dependency
or
its
service
container.
So
it's
it's
pretty
Advanced
and
and-
and
we
would
probably
need
something
like
that
in
Elsa
3
as
well
or,
if
not
else,
a
three
in
the
dashboard
application
itself,
but
of
course
also
on
the
server,
because
here
in
in
Orchard,
the
UI
serve
from
the
same
application
as
well
as
the
word
for
server,
but
in
in
Elsa
3.
Typically,
you
will
have
a
separate
server
on
this
on
on
the
back
end,
and
then
you
have
maybe
a
separate
application.
A
B
B
Yeah
yeah
so,
for
example,
an
admin
UI
where
you
want
to
enable
or
disable
certain
features,
or
you
know,
even
if
you
have
a
Marketplace
later
on,
and
you
want
to
just
download
some
activities
and
import
them
into
the
system.
So
this
could
be
a
really
core
capability
to
to
also
consider
an
answer
itself.
Yeah.
A
Absolutely
yeah
and
I
want
to
work
on
that
pretty
soon
after
the
the
else,
the
for
the
the
dashboards
project
is
is
releasable,
then
I
think
one
of
the
next
features
would
be
model
tenancy
in
combination
with
features.
Did
you
did
you
see
the
Elsa
Studio
by
any
chance.
B
The
mud
Blazer
based
on
right,
yes,
I,
think
I,
saw
in
one
of
the
previous
meetings,
but
I
have
not
seen
the
latest
progress
on
that.
Let.
A
Me,
if
you
have
a
few
minutes,
I
can
show
it
yeah
current
state.
B
B
B
A
Sure
so,
as
it
turns
out,
it's
it's
actually
a
quite
powerful
module
to
have
arguably
the
most
powerful
feature
to
have
in
in
Orchard
or
any
CMS,
because
it
allows
you
to
implement
many
scenarios,
for
example,
content
approval
workflows
where,
where
you
don't
want
to
automatically
accept
content
contributions,
but
you
want
to
have
people
review
it
and
then
approve
it.
A
That's
one
example:
another
example
could
be
what
Orchard
allows
you
to
create
custom
forms,
so
you
can
present
those
forms
on
the
website
and
then,
when
somebody
submits
the
form
you
want
to
process
the
data
Maybe
send
an
email
turn
it
into
a
Content
item
and
turn
it
into
an
order
depending
on
on
what
functionality
you're
implementing
what
else?
Let's
take
a
look
at
the
some
of
the
events?
A
Well,
the
HTTP
thing
allows
you
to
expose
an
endpoint
that
you
can
programmatically
invoke
and
then
maybe
perform
tasks
like
we
have
here
assign
a
user
to
a
role.
This
would
be
by
the
way
useful
if
you
are,
if
you
expose
a
let's,
say,
a
form
on
your
website
again,
and
you
want
to
maybe
Implement
a
registration
form
to
allow
users
to
sign
up
with
your
website.
A
A
So
those
are
just
two
examples
that
come
to
my
mind,
I'm
sure,
there's
many
other
use
cases
that
people
have
have
used
to
in
in
Orchard
itself
and
and
I
think
workflows
within
a
system
like
Orchard
or
other
content,
Management
systems
and
and
probably
even
more
so
in
dashboard
applications
that
revolve
around
certain
domains.
Of
course,
here
we
are
talking
about
Orchard
with
basic
content,
Management
systems,
but
also
there
is
also
used
in
by
by
organizations
that
extend
the
system
with
domain-specific
entities,
like
maybe
customer
management
or
document
management.
A
Yeah,
absolutely
and-
and
you
have
used
Elsa
workflows
in
in
your
projects,
so
those
scenarios
probably
could
also
translate
into
Orchard
core.
If
you
were
using
Orchid
core
to
implement
parts
of
your
of
your.
B
Yeah
of
your
application,
yeah
I,
think
forms
is
very
common
and
we
have
used
forms
concept
with
also
workflows
so.
A
A
I'm
trying
to
start
the
studio,
but
it's
using
a
port,
that's
already
in
use
the
still
this
one
stopped
this
one
everything
stopped
our
connection
refused.
Let's
try
to
connect
to.
Of
course.
Let
me
start
this
one.
First,
apparently
there's
some
fireworks
going
on
I
didn't
know
it
was
that
that
time
of
the
year
again,.
B
A
Right
so
here
we
have
the
dashboard.
This
is
Elsa
Studio,
it's
going
to
it's
built
in
Blazer
and
it
works
both
using
Blazer
server,
as
well
as
laser
webassembly
and
the
way
it's
I
probably
already
explained
this.
The
last
time
you
you
attended
this
thing
right:
okay,
yeah,
so
I
will
not
go
over
that,
but
I
will
show
you
the
progress
of
course,
dark
mode.
Light
mode
is
still
there.
A
A
new
feature
to
be
implemented
is
environments,
so
this
allows
you
to
switch
between
the
a
registered
environment
that
you
want
to
work
on,
so
it
could
be
your
local
environment
staging
production.
If
you
want
to
be
brave
and
make
fixes
directly
in
the
in
production,
if
you
want
to
and
depending
on
the
selection,
the
contents
would
be
loaded
from
from
from
that
environment.
So
this
basically
translates
to
an
else
API
endpoint
or
Elsa
hpn
server
URL
right.
So
it
would
fetch
the
information
from
there.
So.
A
Instances
doesn't
work
yet
this
is
here.
We
have
a
few
more
menus
just
to
scaffold
some
of
the
upcoming
modules
like
web
Hooks
and
secrets
users
and
roles
management,
so
that
you
can,
you
know,
manage
uses
of
the
system
in
roles
and
permissions
secrets
and
web
books.
It's
it's
all
just
stopped
out,
so
it's
not
really
implemented.
A
This
is
a
demo
module
and,
of
course,
on
the
settings
there
could
be
a
thing
called
features
like
in
Orchard,
so
that
you
can
indeed
enable
disable
and
configure
settings
or
features
here
we
have
the
designer
wow.
This
looks
ugly.
Let
me
try
again:
okay,
something
is
not
right
here,
I
fixed
this,
but
let
me
quickly
switch
to
light
mode,
which
is
a
little
bit
easier
on
the
eye
in
terms
of
the
grid.
So
what's
really
cool
about
this
is
this
that
this
designer
this
area?
This
is
X6,
so
it
uses
JS
interrupt.
A
B
A
Yeah
seriously,
so
so
actually
also
this
toolbar.
This
thing
here,
the
breadcrumbs
these
things
here.
This
is
all
Blazer,
it's
not
implemented,
yet
it's
just
mostly
UI
scaffolds.
Also
for
the
speaker,
this
is
also
Blazer
using
mud,
Blazer
components.
The
way
this
works
is
with
blaze
components.
You
can
register
them
as
custom
elements
so
that
you
can
use
them
in
in
in
you
know
in
JavaScript.
So
when
I
configure
this
this
designer
this
design
service
using
X6
I
have
a
custom.
A
A
And
you
can-
and
you
can
already
see
where
this
might
be
going
now-
it
becomes
so
much
easier
to
to
customize
the
UI
of
your
activities.
You
could
do
it
also
in
stencil,
but
then
you
would
have
to
create
a
sensor
component,
but
now
you
can
use
Razer
Razer
components
to
to
customize
the
activities
provide
custom
activities
with
custom
UI
both
on
the
designer,
of
course.
Also
in
the
inputs.
It
would
be
easier
to
add
custom
input
controls
you
implement
cascading
UI.
If
you
need
to
Etc
yeah,
that's
so
that's
the
current
current
status
does.
A
Oh
so
so
mud
laser
implements
material,
UI
and,
and
this
dashboard
is
not
set
up
to
allow
you
to
do
something
completely
different.
It
actually
tightly
integrated
mod
Blazer.
Of
course,
mud
Blazer
itself
has
theming
in
terms
of
colors,
so
you
can
change
the
colors
and
certain
other
aspects,
but
you
are
stuck
with
material
design.
It's
not
like
Orchard,
where
you
have
complete
freedom
in
terms
of
theming.
B
For
us,
it
is
fine
to
be
stuck
with
material.
That
is,
we
are
trying
to
implement
material
for
our
interface,
so
I
just
want,
because
right
now,
the
way
we
embed
it
is
just
we
put
the
designer
inside
the
UI.
It
is
not
really
matching
so
so,
if,
if
this
is
implementing
material,
we
are
also
trying
to
implement
material
I'm,
just
wondering
if
we
can
merge
together
and
have
the
same
theme
somehow.
A
A
A
A
Impressive,
that's
cool
and
so
yeah
so,
but
unfortunately,
I
haven't
been
able
to
continue
with
this
for
the
past
week.
So
it's
there's
no
progress,
yeah,
yet
31st!
So
next,
Wednesday
I
have
the
orchard
talk
after
that.
I
expect
to
be
able
to
continue
with
this
this
dashboard
all
right.
Well,
thank
you
for
joining
Mohammed
I.
Wish
you
a
good
night
yeah
you
too
good
night.
Thank
you
and
I'll
catch
you
next
week,
bye-bye
foreign.