►
From YouTube: Elsa Workflows Community Meeting 11 ( 2022-05-31 )
Description
Meeting 11
Topics
- Elsa 2.8 release
- Elsa 3 updates
○ Service registration cleanup
○ Resizable panels
○ Workflow instance viewer
- Demos
○ SQL syntax + intellisense
○ Cascading dropdowns
- Plugins
○ https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support
A
All
right
I'll
just
get
started
with
the
topics
for
today.
So
first
off
elsa
2.8
has
been
released
about
30
minutes
ago,
so
let's
go
for
their
release
notes.
So
the
first
change
of
note
was
some
fixes
for
the
identity
accessor
made
by
tomi.
So
this
improves
the
multi-tenancy
support.
There
was
a
build
issue
fixed
by
p
davis.
So
that's
a
this
has
something
through
with
case
and
since
the
file
systems
or
case
sensitive
file
systems,
some
improvement
on
the
workflow
into
the
summary
model.
A
This
is
useful
when
you
query
using
the
api
endpoints
and
you
want
the
wanted
list
of
workflow
summaries.
So
now
it
includes
metadata.
This
is
a
new
feature
that
I
demoed
last
week,
so
this
is
about
being
able
to
list
workflow
versions
through
the
designer
and
the
ability
to
revert
to
all
the
versions
of
the
workflow
definition.
So
that's
now
part
of
the
2.8
release,
some
library,
reference
system,
component,
metal,
annotations
or
a
preview
package
thereof
that
has
been
fixed.
That
was
causing
issues
for
some
users.
A
There's
a
new
sql
editor
created
by
muhammad
he's,
hopefully
going
to
demo.
This
later
today,
it
includes
intellisense,
which
is
pretty
cool
some
mapping
for
a
sql
for
the
trigger
entity
that
was
introduced,
I
think
with
elsa
2.7
or
even
2.6.
I
am
not
sure,
but
we
missed
something
in
the
yes
sql
provider,
so
that's
been
fixed
by
matt
and
jay
added
a
nice
little
feature
that
purchased
azure
subscriptions
on
startup.
A
Those
subscriptions
keep
receiving
those
messages,
but
they
are
not
being
consumed
because
the
consumer
is
no
longer
there
and
that
causes
ultimately
the
subscription
count
to
reach
its
its
maximum
number
of
items,
and
that
will
cause
exceptions
in
the
application
and
we'll.
I
see
this
happening
in
a
production
instance.
It
will
cause
that
production
instance
to
fail.
So
this
is
a
pretty
important
improvement.
Without
this,
you
would
have
to
manually
check
your
topics
in
azure
service,
bus
and
manually
delete
them,
so
that's
less
than
ideal.
A
So
it
includes
things
like
new
contributors,
a
full
chain
slot
here
and
a
list
of
contributors
of
this
vr.
So
I
think
that's
really
nice,
so
work
has
been
done
on
lsat3
and
mainly
so.
This
was
mainly
cleanup
work,
but
it's
interesting
all
the
same,
so
I'll
briefly
go
over
it.
First
and
foremost,
structure
has
been
restructured,
so
everything
almost
everything
lives
inside
a
folder
called
modules,
and
this
more
or
less
embraces
the
the
onion
architecture.
A
I
think
that's
name,
I'm
not
entirely
sure.
Let
me
look
up
what
the
correct
name
is.
I
think
I
had
it
exactly
right.
So
what
does
this
mean?
Every
module
adds
its
own
set
of
features
to
the
system,
so
that
means
workflows
itself
is
a
feature
with
other
features
that
consume
core
features.
So,
for
example,
this
workflow
score
module
introduces
a
workflow
runner,
so
it
contains
the
logic
to
execute
workflows,
then
there's
another
module
that
exposes
functionality
to
http
clients,
just
as
an
example.
A
Similarly,
we
have
a
management
module
that
introduces
functionality
to
manage
workflow
definitions,
another
one
that
adds
persistence
and
then
there's
the
runtime
one
where
this
one
introduces
some
primitives
to
host
workflows,
and
it
also
offers
a
bunch
of
abstractions
that
can
then
be
used
by
other
modules,
in
this
case
the
protoactor
module.
So
the
these.
These
are
just
examples
for
workflow
related
functionality.
A
As
a
as
a
developer,
you
can
extend
the
system
by
creating
your
own
modules,
which,
at
the
end
of
the
day,
are
just.net
packages,
so
to
just
give
another
example,
there's
a
javascript
module
that
adds
scripting
features
using
the
javascript
syntax
using
the
tnt
packets,
but
it
also
adds
activities
to
the
system.
So
this
is
a
big
restructuring
and
then,
let's
take
a
look
at
how
to
configure
these
modules
in
your
application.
A
So
here's
a
new
folder
called
bundles
and
my
idea
with
these
bundles
is
that
it
contains
packages
that
reference
a
bunch
of
other
module
packages
with
common
configurations.
So,
for
example,
a
typical
workflow
server
wall
reference.
This
elsa
bundle
which
itself
in
turn
references
most
commonly
used
packages
like
the
mediator
and,
of
course,
workflow
related
modules
and
then
there's
a
all-in-one
web
application
and
that
hosts
both
the
elsa
designer,
as
well
as
a
workflow
server.
A
So
this
is
what
we
call
an
lsat
to
the
monolith
setup
and
this
one
is
the
workflow
server
and
that's
a
common
configuration
for
just
having
a
workflow
server
that
does
not
serve
the
designer,
so
that
would
require
the
user
to
create
their
own
dashboard
application
into
which
they
can,
of
course,
host
the
reusable
elsa
designer
components.
So
the
syntax
to
configure
elsa
looks
like
this.
So
it's
the
same
as.
A
But
if
you
want,
you
can
then
drill
into
the
details
and
tweak
the
configuration
as
you
see
fit.
In
this
way
you
can
add
features,
remove
features
and
change
default
settings,
so
that
was
a
lot
of
refactoring
took
up
quite
some
time,
but
I
think
it's
pretty
clean,
I'm
pretty
happy
with
it.
So
that
is
everything
about
the
surface
tracing
cleanup.
A
A
new
contribution
came
in
today
that
adds
resizable
panels
to
the
lz3
designer,
which
is
pretty
cool,
I'll,
show
you
what
that
looks
like
so,
for
example,
let's
go
to
the
workflow
definitions
and
open
a
warfare
definition
here,
and
these
two
panels
now
are
resizable,
and
this
is
very
convenient
because
for
certain
activities
you
may
need
some
more
screen
real
estate
to
conveniently
change
the
properties
of
a
given
activity.
So
that's
cool.
I've
been
working
on
the
workflow
instance
viewer.
A
B
B
A
I
will
now
open
it
opens
that
workflow
of
this
version
in
the
designer
here
it's
in
read-only
mode,
so
you
shouldn't
be
able
to
drag
and
drop,
but
I
think
I
I
just
broke
it
or
forgot
to
implement
this
work
in
progress,
as
you
can
see,
and
the
panel
on
the
right-hand
side
is
different
compared
to
the
workflow
definition
editor
here.
It
shows
workflow
instance
related
information
like
the
instance
id
definition,
id
diversion,
etc
the
status
and
some
timestamps.
A
So
the
next
feature
for
me
to
work
on
is
the
workflow
journal,
and
that
will
I'm
thinking
of
adding
it
to
the
left-hand
side
so
that
you
always
have
the
journal
in
view,
while
looking
at
a
workflow
instance,
and
you
have
the
ability
to
inspect
individual
activity
properties
on
the
right-hand
side,
all
right.
So
that's
my
brief
update
in
a
nutshell
for
elsa
2
and
elsa
3.
mohammed.
If
you
are
prepared,
if
you
like,
you
can
demo
the
sequel,
syntax
work
that
you've
done.
B
So
in
here
I'm
going
to
present
the
new
sql
syntax
and
basically
because
we
are
using
the
monaco
editor,
I
was
looking
for
some
time
how
we
can
implement
sql
syntax
supports
and
now,
especially
that
we
have
sql
activities.
So
that
part
is
now
added
and
you
can
see.
For
example,
here
we
have
the
javascript
liquid
and
the
sequence
in
text
now
is
an
added
option.
B
So,
if
you'd
like
to
use
that
one
you'll
get
the
syntax
highlighting
for
sql
in
your
code
and
activity,
and
so
that
is
already
there
and
the
other
thing
that
I
wanted
is
that
for
the
variables
like
the
string
and
the
number
variables
the
simple
ones.
B
If
I
want
to
use
that
as
part
of
my
sql
query,
so
auto
completion
is
also
available
and
it
will
pick
from
the
type
definitions,
strings
and
numbers
so
workflow
and
stands
for
definition,
and
also,
if
I
have
defined
some
variables
in
my
workflow,
it
will
also
be
able
to
pull
these
ones
here.
So
that
is
also
possible
and,
for
example,
I
can
demonstrate
here.
B
I
will
must
run
this
workflow
and
what
it's
going
to
do
is
that
it
will
pull
the
correlation
id
and
insert
it
as
our
recording
database,
and
one
more
thing
here
is
that
to
handle
the
null
values,
because
I
think
sql
has
some
special
treatment
for
none.
So
in
this
activity.
I
am
setting
this
just
a
test
variable
I'm
setting
the
value
as
num
and
then,
if
I
use
that
variable
instead
here,
so
it
will
also
be
able
to
handle
that
now.
If
I
test
this
activity,
it
is
also
able
to
handle
the
null
values.
B
So
this
kind
of
support.
I
think
it
is
quite
handy,
especially
if
you
have
a
very
complex
sequel
series
and
you
want
to
get
the
code
highlighting
and
also,
if
you
want
to
integrate
some
variables
into
your
query
without
breaking
the
syntax
of
the
sql,
which
I
think
it
will
be
really
useful.
Moving
forward.
Yeah.
A
B
I've
done
it
in
the
handler,
so
the
handler
will
check
the
value
for
the
variable.
Oh.
A
C
A
quick
question:
do
you
think
it
could
be
possible
to
make
a
command
like
a
select
into
a
variable?
It's
not
related
to
your
work,
but
maybe
it
could
be
a
useful.
A
C
I
know
we
can.
We
can
write
this
kind
of
command
in
sql
directly,
but
I
don't
know
if
there
is
a
if
it
is
useful
to
do
this
directly
with
a
viable
workflow
variable.
B
Yeah,
so
currently
the
variable
handling
is
a
very
just
as
a
replacement,
so
I'm
just
checking
the
value
and
then
replacing
it
in
into
the
query.
So
if
it's
a
number
or
if
it's
a
string,
I'm
just
replacing
this
variable
with
the
value,
but
what
you
mentioned
is,
I
think,
is
really
helpful
and
that
is
more
about
parameter
handling.
I
think
yeah
yeah.
So
that
could
be
the
next
step.
Maybe
in
this
actually
currently
we
are
doing
some
custom
activities
using
oracle
and
oracle
has
the
concept
of
input
and
output
parameters.
B
So
we
have
built
some
custom
activity
there
to
map
these
parameters,
because
we
also
found
there's
some
challenge
in
that
case,
but
yeah.
This
could
be
maybe
some
advanced
way
to
to
handle
the
variables.
If
I
can
really
select
the
statement
and
then
insert
it
directly
to
the
variable,
that
would
be
awesome.
A
Yeah,
this
might
be
related
to
what
tommy
suggested
on
github,
where
currently,
if
you
want
to
capture
output
of
activities,
you
need
to
add
a
set
variable
activity
to
the
workflow.
But
if
you
need
to
do
this
often,
then
it
kind
of
pollutes
the
workflow
with
a
lot
of
set
variable
activities.
So
this
would
be
one
nice
way
to
work
around
that
so
that
you
can
directly
from
your
command,
insert
a
sql
value
or
a
value
from
the
database
directly
into
a
workflow
variable.
Yeah.
C
A
A
C
Try
to
get
them
to
commit
and
launch
everything.
So
the
idea,
if
we
take
a
look
at
the
pr,
so
I
have
some
I
think
race
condition
is
you
is
a
ui
event?
Does
the
id?
Do
you
see
my
screen?
One?
Second
yeah.
I
see
it
okay,
so
the
idea
is
to
be
able
to
create
more
than
two
drop-down
lists
in
cascade,
and
so
here
I
have
a
brand
with
a
different
car.
C
Then
for
each
car
I
will
have
some
model
and
with
a
combination
of
rand
and
model
I
can
have
different
color
so
and
everything
in
the
data
is
configured
on
the
back
end
in
c-sharp,
using
the
iron
time
select
list
item,
and
so
we
could.
We
can
then
plug
this
to
a
database,
for
example,
and
one
issue
I
have
is
when
I
select,
for
example,
here
tesla,
I
should
have
a
problem
with
the
event,
because
some
elements
are
repeat
in
my
list.
I.
C
So
this
is
here
we
are,
I
have
the
the
color,
for
example,
and
the
model,
so
I
think
it's
a
ui
issue
and
if
we
take
a
look
at
the
the
c
sharp,
the
idea
is
to
create
to
use
the
drop
down.
Okay,
I
use
an
option
provider
like
widow
like
we
do
with
a
natural
drop
down,
and
here
I
have
just
had
some
option
and
this
option
I
use
in
the
ui.
So
it's
a
little
trick
for
now,
but
as
explained
in
the
pier,
we
could
add
some
property.
C
The
activity
input
which
could
be
depends
on
depends
on
property
and
depends
on
value,
because
here
I
want
to,
for
example,
for
the
model.
I
need
to
update
the
model
when
the
user
change
the
brand
list,
so
I
need
to
depends
on
the
event
change
on
brand,
but
I
want
to
get
the
value
of
the
model
and
brand
to
show
different
color.
That
is
why
that
is
how
I
implement
this
in
the
get
select
list.
For
example,
if
my
property
change
is
brand,
I
will
do
the
the
different
return,
the
different
element.
C
If
the
name
is
modal,
I
will
check
what
values
are
sent
to
the
api,
to
choose
a
good
as
a
good
model
regarding
the
brand
and
for
color.
I
need
the
brand
and
the
model
and
because
I
choose
in
the
option
model
and
brand
the
ui
send
me
the
two
values.
So
I
see
element
configure
here.
I
use
buy
the
ui
but
generically
to
send
the
value
and
to
react
to
specific
events.
This
one.
C
Right
so
this,
so
the
this
line
is
depend
on
event,
then
in
64
and
then
65
is
depend
on
a
value
card
and
then
in
the
get
select
list.
I
think
we
could
change
this
code
to
use
a
database
and
to
use
a
lazy
lazy
select
on
the
database,
for
example,
and
this
could
be
a
really
early
april
for
this
kind
of
choice.
This.
A
C
I
don't
find
I
do
a
lot
of
tests.
I
don't
succeed
to
find
the
issue
on
the
ui
so
for
this
I
need
your
help
and
I
can
clean
up
the
code
before
and
add
the
depends
on
event
and
depends
on
value
yeah.
A
C
That's
good
and
I
think
I
have
only
two
change
file,
so
everything
should
be
in
the
dropdown
property
yeah.
C
Very
cool
thanks,
jay
you're
welcome,
and
I
just
have
a
one
question
about
the
the
loading
what
you
show
at
the
beginning
for
azer3.
I
don't
know
if
you
can
just
show
you
your
notes.
C
C
Okay
for
the
service
registration-
I'm
just
wondering
if
rls
are
three,
we
could
register
some
activity
like
a
plugin,
so
once
the
the
server
is
started
in
the
lifecycle
of
the
application,
we
can
using
an
api
load
with
a
package,
send
a
package
to
an
api
and
load
new
activity
by
using
a
plugin
architecture
right
so.
A
A
I
believe
these
days
to
to
do
so,
so
that
would
be
possible,
but
of
course
the
activities
are
registered
at
startup
time,
but
I
think,
if
we
take
a
look
at
the
implementation,
you
should
be
able
to
add
it
at
runtime
as
well
yeah,
because
here
there
is
a
api
options.
Object
that's
been
configured
during
startup,
but
you
could
inject
this
high
options
of
api
options
and
then
add
more
activity
types
at
runtime,
so
that
is
certainly
possible.
A
Maybe
we
need
to
create
a
nice
api
to
to
make
it
easy
for
users
to
to
do
so,
but
it
should
definitely
be
possible.
Okay,.
C
I
think
when
I
will
start
to
work
on
the
three
I
will,
I
will
try
this
cool.
B
Yeah,
I
think
I
was
checking
the
same
thing.
The
other
day
in
the
microsoft
docs
itself.
There
is
page
for
the
net
core
plugins
how
to
load
the
assemblies
at
runtime
and
also
how
to
make
it
work
with
dependency
injection
the
container.
So
I
think
from
from
that
angle,
it
is
possible,
but
then
it
would
be
how
to
do
that
with
elsa.
Yes,.
C
The
idea
is,
if,
if
everything
is
well
decoupled
with
using
interface,
we
could
load
a
different
thing
and
there
is
no
abdomen
and
the
the
unloading
of
asmry
is
a
little
bit
different,
but
there
is
a
very
good
sample
on
the
msdn.
That's.
A
C
The
use
of
assembly
load
context
and
it's
it's
it's
easy
to
use,
and
we
just
have
to
to
be
sure
that
we
can
unload
the
assembly
after
to
be
to
be
very
powerful.
Indeed,.
B
A
Especially,
if
you,
if
you
have
an
elsa,
workflow
server,
hosted
somewhere,
and
you
want
to
be
able
to
add
plugins
at
runtime
dynamically,
then
this
is
what
allows
you
to
do
this.
C
But
in
fact,
this
kind
of
feature
is
also
linked
to
the
kappa,
the
capability
to
execute
some
activity
in
specific
environment,
because
if
we
can,
for
example,
start
one
container
to
execute
a
specific
activity,
we
can
load
a
specific
container
with
some
external
dependencies
to
execute
this
activity.
It's
it
could
be
a
good
also,
and
it's
not
another
kind
of
using
plugin.