SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Illustration by xkcd used with permission: http://xkcd.com/518



                                                                 1
If you understand flowcharts
you will have absolutely no
problems understanding
workflows...




                               2
If you understand flowcharts
you will have absolutely no
problems understanding
workflows...

              let’s go
               drink

                               2
What is a workflow?
     A modeling and automation concept for processes,
     especially business related processes

     Or: a way to emulate and automate processes using
     reusable software components

     Or: a simple state machine to handle your data flow on
     a way suits can grasp

     Or: perhaps an attempt at 4GL?

     Or: plz read the wikipedia article




                                                              3
So what is Workflow?

     A not so light weight Perl framework available on
     CPAN, which can be used to implement actual
     workflows

     Primarily focused on exploiting the best practice of
     doing configuration over coding...

     Well you will have to do “some” coding




                                                            4
a workflow
consists of:
 states

 actions/transitions




                       5
Workflows

    Configurations are described in either XML or Perl - out of
    the box

    You can even write your own workflow configuration
    handler. A tutorial explains how to write a YAML
    configuration handler

Actions (Perl methods - this is where you code)

    conditions (flow controllers)

    validators (Perl methods - this is where you can write code)

Persisters

    Several persister options currently available and Workflow
    is DBI compatible

                                                                   6
<workflow>
<type>Ticket</type>
<description>This is the workflow for sample application Ticket</
description>
<persister>TestPersister</persister>

 <state name="INITIAL">
  <description>This is the state the workflow enters when
    instantiated. It's like a 'state zero' but since we're
    using names rather than IDs we cannot assume</description>

<!-- This action is accessible from this state by everyone -->
  <action name="create issue"
     resulting_state="CREATED"/>
 </state>

 <state name="CREATED">
  <description>State of ticket after it has been created</description>
  <action name="add comment" resulting_state="NOCHANGE">
    <condition test="defined $context->{ticket}" />
  </action>

    <action name="edit issue"
        resulting_state="IN_PROGRESS">
     <condition name="IsWorker"/>
    </action>
   </state>
...



                                                                         7
<actions>
   <action name="create issue"
       class="App::Action::TicketCreate">
    <description>Create a new issue</description>
    <field name="subject"
        label="Subject"
        description="Subject of issue"
        is_required="yes"/>
    <field name="description"
        label="Description"
        description="Description of issue"
        is_required="yes" />
    <field name="creator"
        label="Creator"
        description="Name of user who is creating the ticket"
        is_required="yes"
        source_class="App::User"/>
    <field name="type"
        label="Type"
        description="Type of ticket"
        is_required="yes"
        source_list="Bug,Feature,Improvement,Task"/>
    <field name="due_date"
        label="Due Date"
        description="Date ticket is due (format: yyyy-mm-dd hh:mm)"/>
    <validator name="DateValidator">
      <arg>$due_date</arg>
    </validator>
   </action>
...


                                                                        8
<conditions>
 <condition name="IsCreator"
       class="App::Condition::IsCreator"/>
 <condition name="IsWorker"
       class="App::Condition::IsWorker"/>
 <condition name="HasUserAndTicket"
       class="App::Condition::HasUserAndTicket"/>
</conditions>




                                                    9
<validators>
 <validator name="DateValidator"
       class="Workflow::Validator::MatchesDateFormat">
  <description>Validator to ensure dates are proper</description>
  <param name="date_format" value="%Y-%m-%d %H:%M"/>
 </validator>
</validators>




                                                                    10
<persisters>
 <persister name="TestPersister"
        class="Workflow::Persister::DBI::ExtraData"
        dsn="DBI:SQLite:dbname=db/ticket.db"
        extra_table="workflow_ticket"
        extra_data_field="ticket_id"/>
</persisters>




                                                      11
Criticism
     Workflow is not particularly Perl-ish, it
     is actually quite low on black magic
     Workflow is not as light weight as other
     CPAN/Perl modules
     You cannot just call Workflow->new and
     be good to go
     Yes - we are using patterns


                                                 12
the Project
      Small community with some nice reference
      implementations (OpenXPKI etc.)

      High acceptance rate of patches and contributions

      Project Directives:

          Stability, we have people using this in production

          Extensibility, we want to make Workflow as
          useful as possible




                                                               13
some history
    Initial implementation by Chris Winters
    (releases from 0.01 to 0.17).

    11th. of October 2004 - Initial release to CPAN
    (0.10)

    7th. of July 2006 Workflow handed over to me
    (jonasbn) for ongoing maintenance and
    development (my first release was 0.18)

    19th. of September 2006 - Project set up at
    SourceForge

    Latest release 1.33, January 30th. 2010, yes we
    release early and often - well as early and often
    as it makes sense



                                                        14
future stuff...
      In pursuit of stability:

          Aiming for higher test coverage, we have gone from: 63,4%
          (0.17) to 76.8% (1.33)

          Workflow does currently NOT work under Perl 5.12 and newer

      In pursuit of extensibility:

          Evaluation of issues in RT some of these are in regard to new
          features and not bugs

      In pursuit of a larger user base:

          Aiming for more and better documentation and examples,
          much of the documentation seems to reflect version 0.15 - so
          updating and proof reading is required


                                                                          15
about me
     Got interested in workflow after having worked with
     Oracle Workflow (a free commercial product, well free
     to the extent it does require Oracle)

     Got excited when discovering Workflow on CPAN - all
     free and all open source

     Took over from Chris Winters

     My own workflow projects stranded, but I still hope to
     this day to find use of it at some point - for now I
     only maintain Workflow...


                                                              16
Resources
     http://perl-workflow.sourceforge.net/

        Friendly community

        Documentation Wiki

        low-traffic mailing list

        Subversion repository

        RT queue, currently only holding two items, where
        one is an older patch not having been integrated yet

        Irregular releases, my bad

     jonasbn@cpan.org


                                                               17

Contenu connexe

Tendances

Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java Hitesh-Java
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
Metaprogramming JavaScript
Metaprogramming  JavaScriptMetaprogramming  JavaScript
Metaprogramming JavaScriptdanwrong
 
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java ProgrammingJava Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programmingbusiness Corporate
 
Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Hirofumi Iwasaki
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevMattias Karlsson
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)slire
 
Java & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate FrameworkJava & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate FrameworkMohit Belwal
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0Ganesh Kondal
 
Perl 6 DBDI 201007 (OUTDATED, see 201008)
Perl 6 DBDI 201007 (OUTDATED, see 201008)Perl 6 DBDI 201007 (OUTDATED, see 201008)
Perl 6 DBDI 201007 (OUTDATED, see 201008)Tim Bunce
 
Jdbc Complete Notes by Java Training Center (Som Sir)
Jdbc Complete Notes by Java Training Center (Som Sir)Jdbc Complete Notes by Java Training Center (Som Sir)
Jdbc Complete Notes by Java Training Center (Som Sir)Som Prakash Rai
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Marco Breveglieri
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xGeertjan Wielenga
 
Java EE 7 for Real Enterprise Systems
Java EE 7 for Real Enterprise SystemsJava EE 7 for Real Enterprise Systems
Java EE 7 for Real Enterprise SystemsHirofumi Iwasaki
 
Ruby for C#-ers (ScanDevConf 2010)
Ruby for C#-ers (ScanDevConf 2010)Ruby for C#-ers (ScanDevConf 2010)
Ruby for C#-ers (ScanDevConf 2010)Thomas Lundström
 
Visage Android - Cleaner APIs, Cleaner UIs
Visage Android - Cleaner APIs, Cleaner UIsVisage Android - Cleaner APIs, Cleaner UIs
Visage Android - Cleaner APIs, Cleaner UIsStephen Chin
 
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...Edureka!
 
Open Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVMOpen Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVMTom Lee
 

Tendances (19)

Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Metaprogramming JavaScript
Metaprogramming  JavaScriptMetaprogramming  JavaScript
Metaprogramming JavaScript
 
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java ProgrammingJava Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programming
 
Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Future of Java EE with Java SE 8
Future of Java EE with Java SE 8
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
 
Java & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate FrameworkJava & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate Framework
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
 
Perl 6 DBDI 201007 (OUTDATED, see 201008)
Perl 6 DBDI 201007 (OUTDATED, see 201008)Perl 6 DBDI 201007 (OUTDATED, see 201008)
Perl 6 DBDI 201007 (OUTDATED, see 201008)
 
Jdbc Complete Notes by Java Training Center (Som Sir)
Jdbc Complete Notes by Java Training Center (Som Sir)Jdbc Complete Notes by Java Training Center (Som Sir)
Jdbc Complete Notes by Java Training Center (Som Sir)
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
 
Java EE 7 for Real Enterprise Systems
Java EE 7 for Real Enterprise SystemsJava EE 7 for Real Enterprise Systems
Java EE 7 for Real Enterprise Systems
 
Ruby for C#-ers (ScanDevConf 2010)
Ruby for C#-ers (ScanDevConf 2010)Ruby for C#-ers (ScanDevConf 2010)
Ruby for C#-ers (ScanDevConf 2010)
 
Visage Android - Cleaner APIs, Cleaner UIs
Visage Android - Cleaner APIs, Cleaner UIsVisage Android - Cleaner APIs, Cleaner UIs
Visage Android - Cleaner APIs, Cleaner UIs
 
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...JavaScript Interview Questions and Answers | Full Stack Web Development Train...
JavaScript Interview Questions and Answers | Full Stack Web Development Train...
 
Open Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVMOpen Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVM
 

En vedette

Beauty Of Mathematics
Beauty Of MathematicsBeauty Of Mathematics
Beauty Of Mathematicsmimounh
 
You Fucked Up. Now What?
You Fucked Up. Now What?You Fucked Up. Now What?
You Fucked Up. Now What?Kevin Hoffman
 
Technology In Early Childhood Pw Poin
Technology In Early Childhood Pw PoinTechnology In Early Childhood Pw Poin
Technology In Early Childhood Pw Poindjmcrh
 
Debt Dr Introduction
Debt Dr IntroductionDebt Dr Introduction
Debt Dr Introductiondrazza65
 
C certification-questions
C certification-questionsC certification-questions
C certification-questionsYasser Ibrahim
 
Catalogo Mobiliário
Catalogo MobiliárioCatalogo Mobiliário
Catalogo MobiliárioLumatek
 
Portofoliu AIESEC Targu Mures 2009 Toamna
Portofoliu AIESEC Targu Mures 2009 ToamnaPortofoliu AIESEC Targu Mures 2009 Toamna
Portofoliu AIESEC Targu Mures 2009 ToamnaDianazaharia
 
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...New England Direct Marketing Association
 
Luis Veas Powerpoint Tennis
Luis Veas Powerpoint TennisLuis Veas Powerpoint Tennis
Luis Veas Powerpoint TennisLuis9
 
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...New England Direct Marketing Association
 

En vedette (20)

Workflow NPW2010
Workflow NPW2010Workflow NPW2010
Workflow NPW2010
 
Beauty Of Mathematics
Beauty Of MathematicsBeauty Of Mathematics
Beauty Of Mathematics
 
Investing in Youth
Investing in YouthInvesting in Youth
Investing in Youth
 
You Fucked Up. Now What?
You Fucked Up. Now What?You Fucked Up. Now What?
You Fucked Up. Now What?
 
2006 Downtown Ferndale Parking Study_Section 6
2006 Downtown Ferndale Parking Study_Section 62006 Downtown Ferndale Parking Study_Section 6
2006 Downtown Ferndale Parking Study_Section 6
 
Technology In Early Childhood Pw Poin
Technology In Early Childhood Pw PoinTechnology In Early Childhood Pw Poin
Technology In Early Childhood Pw Poin
 
Trompito 1
Trompito 1Trompito 1
Trompito 1
 
Debt Dr Introduction
Debt Dr IntroductionDebt Dr Introduction
Debt Dr Introduction
 
NEDMA14: Creating Email Awesomeness! - Nirmal Parikh
NEDMA14: Creating Email Awesomeness! - Nirmal ParikhNEDMA14: Creating Email Awesomeness! - Nirmal Parikh
NEDMA14: Creating Email Awesomeness! - Nirmal Parikh
 
C certification-questions
C certification-questionsC certification-questions
C certification-questions
 
Catalogo Mobiliário
Catalogo MobiliárioCatalogo Mobiliário
Catalogo Mobiliário
 
003 lac the worlds future rice bowl, robert zeigler
003   lac the worlds future rice bowl, robert zeigler003   lac the worlds future rice bowl, robert zeigler
003 lac the worlds future rice bowl, robert zeigler
 
Portofoliu AIESEC Targu Mures 2009 Toamna
Portofoliu AIESEC Targu Mures 2009 ToamnaPortofoliu AIESEC Targu Mures 2009 Toamna
Portofoliu AIESEC Targu Mures 2009 Toamna
 
Het Nieuwe Werken in de praktijk
Het Nieuwe Werkenin de praktijkHet Nieuwe Werkenin de praktijk
Het Nieuwe Werken in de praktijk
 
Employee Engagement by Carrie Wiegand
Employee Engagement by Carrie Wiegand Employee Engagement by Carrie Wiegand
Employee Engagement by Carrie Wiegand
 
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...
Print Technology: Functional Printed Electronics - RFID & NFC versus QR Codes...
 
Catalogo Lazúli 2009
Catalogo Lazúli 2009Catalogo Lazúli 2009
Catalogo Lazúli 2009
 
Projeto Apc Vivian
Projeto Apc VivianProjeto Apc Vivian
Projeto Apc Vivian
 
Luis Veas Powerpoint Tennis
Luis Veas Powerpoint TennisLuis Veas Powerpoint Tennis
Luis Veas Powerpoint Tennis
 
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...
NEDMA15: Building and Engaging Online Communities with Twitter - Justine Jord...
 

Similaire à Understanding workflows through flowcharts and Perl's Workflow module

Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceOpenshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceDarnette A
 
2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratie2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratiehcderaad
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipseanshunjain
 
Take Your XPages Development to the Next Level
Take Your XPages Development to the Next LevelTake Your XPages Development to the Next Level
Take Your XPages Development to the Next Levelbalassaitis
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumLiraz Shay
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerAndrew Phillips
 
Puppet for Sys Admins
Puppet for Sys AdminsPuppet for Sys Admins
Puppet for Sys AdminsPuppet
 
Architecting the Future: Abstractions and Metadata - STL SilverLinings
Architecting the Future: Abstractions and Metadata - STL SilverLiningsArchitecting the Future: Abstractions and Metadata - STL SilverLinings
Architecting the Future: Abstractions and Metadata - STL SilverLiningsDaniel Barker
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Codemotion
 
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...DevOpsDays Tel Aviv
 
Java Performance and Profiling
Java Performance and ProfilingJava Performance and Profiling
Java Performance and ProfilingWSO2
 
Architecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStockArchitecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStockDaniel Barker
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteDr Nic Williams
 
No Hugging, No Learning
No Hugging, No LearningNo Hugging, No Learning
No Hugging, No LearningOlaf Alders
 
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands On
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands OnjBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands On
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands OnMauricio (Salaboy) Salatino
 
...and thus your forms automagically disappeared
...and thus your forms automagically disappeared...and thus your forms automagically disappeared
...and thus your forms automagically disappearedLuc Bors
 
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...Zhenzhong Xu
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
 

Similaire à Understanding workflows through flowcharts and Perl's Workflow module (20)

BPMS1
BPMS1BPMS1
BPMS1
 
BPMS1
BPMS1BPMS1
BPMS1
 
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhceOpenshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce
 
2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratie2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratie
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipse
 
Take Your XPages Development to the Next Level
Take Your XPages Development to the Next LevelTake Your XPages Development to the Next Level
Take Your XPages Development to the Next Level
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
 
Puppet for Sys Admins
Puppet for Sys AdminsPuppet for Sys Admins
Puppet for Sys Admins
 
Architecting the Future: Abstractions and Metadata - STL SilverLinings
Architecting the Future: Abstractions and Metadata - STL SilverLiningsArchitecting the Future: Abstractions and Metadata - STL SilverLinings
Architecting the Future: Abstractions and Metadata - STL SilverLinings
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...
 
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
 
Java Performance and Profiling
Java Performance and ProfilingJava Performance and Profiling
Java Performance and Profiling
 
Architecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStockArchitecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStock
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
No Hugging, No Learning
No Hugging, No LearningNo Hugging, No Learning
No Hugging, No Learning
 
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands On
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands OnjBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands On
jBPM5 Community Training Module 4: jBPM5 APIs Overview + Hands On
 
...and thus your forms automagically disappeared
...and thus your forms automagically disappeared...and thus your forms automagically disappeared
...and thus your forms automagically disappeared
 
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 

Plus de Jonas Brømsø

Plus de Jonas Brømsø (11)

Markdownlint
MarkdownlintMarkdownlint
Markdownlint
 
Mojolicious and REST
Mojolicious and RESTMojolicious and REST
Mojolicious and REST
 
Perl-Critic
Perl-CriticPerl-Critic
Perl-Critic
 
Stackato v6
Stackato v6Stackato v6
Stackato v6
 
Stackato v5
Stackato v5Stackato v5
Stackato v5
 
Stackato v4
Stackato v4Stackato v4
Stackato v4
 
Stackato v3
Stackato v3Stackato v3
Stackato v3
 
Stackato v2
Stackato v2Stackato v2
Stackato v2
 
Stackato
StackatoStackato
Stackato
 
Using Jenkins for Continuous Integration of Perl components OSD2011
Using Jenkins for Continuous Integration of Perl components OSD2011 Using Jenkins for Continuous Integration of Perl components OSD2011
Using Jenkins for Continuous Integration of Perl components OSD2011
 
Test builder
Test builderTest builder
Test builder
 

Dernier

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Dernier (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Understanding workflows through flowcharts and Perl's Workflow module

  • 1. Illustration by xkcd used with permission: http://xkcd.com/518 1
  • 2. If you understand flowcharts you will have absolutely no problems understanding workflows... 2
  • 3. If you understand flowcharts you will have absolutely no problems understanding workflows... let’s go drink 2
  • 4. What is a workflow? A modeling and automation concept for processes, especially business related processes Or: a way to emulate and automate processes using reusable software components Or: a simple state machine to handle your data flow on a way suits can grasp Or: perhaps an attempt at 4GL? Or: plz read the wikipedia article 3
  • 5. So what is Workflow? A not so light weight Perl framework available on CPAN, which can be used to implement actual workflows Primarily focused on exploiting the best practice of doing configuration over coding... Well you will have to do “some” coding 4
  • 6. a workflow consists of: states actions/transitions 5
  • 7. Workflows Configurations are described in either XML or Perl - out of the box You can even write your own workflow configuration handler. A tutorial explains how to write a YAML configuration handler Actions (Perl methods - this is where you code) conditions (flow controllers) validators (Perl methods - this is where you can write code) Persisters Several persister options currently available and Workflow is DBI compatible 6
  • 8. <workflow> <type>Ticket</type> <description>This is the workflow for sample application Ticket</ description> <persister>TestPersister</persister> <state name="INITIAL"> <description>This is the state the workflow enters when instantiated. It's like a 'state zero' but since we're using names rather than IDs we cannot assume</description> <!-- This action is accessible from this state by everyone --> <action name="create issue" resulting_state="CREATED"/> </state> <state name="CREATED"> <description>State of ticket after it has been created</description> <action name="add comment" resulting_state="NOCHANGE"> <condition test="defined $context->{ticket}" /> </action> <action name="edit issue" resulting_state="IN_PROGRESS"> <condition name="IsWorker"/> </action> </state> ... 7
  • 9. <actions> <action name="create issue" class="App::Action::TicketCreate"> <description>Create a new issue</description> <field name="subject" label="Subject" description="Subject of issue" is_required="yes"/> <field name="description" label="Description" description="Description of issue" is_required="yes" /> <field name="creator" label="Creator" description="Name of user who is creating the ticket" is_required="yes" source_class="App::User"/> <field name="type" label="Type" description="Type of ticket" is_required="yes" source_list="Bug,Feature,Improvement,Task"/> <field name="due_date" label="Due Date" description="Date ticket is due (format: yyyy-mm-dd hh:mm)"/> <validator name="DateValidator"> <arg>$due_date</arg> </validator> </action> ... 8
  • 10. <conditions> <condition name="IsCreator" class="App::Condition::IsCreator"/> <condition name="IsWorker" class="App::Condition::IsWorker"/> <condition name="HasUserAndTicket" class="App::Condition::HasUserAndTicket"/> </conditions> 9
  • 11. <validators> <validator name="DateValidator" class="Workflow::Validator::MatchesDateFormat"> <description>Validator to ensure dates are proper</description> <param name="date_format" value="%Y-%m-%d %H:%M"/> </validator> </validators> 10
  • 12. <persisters> <persister name="TestPersister" class="Workflow::Persister::DBI::ExtraData" dsn="DBI:SQLite:dbname=db/ticket.db" extra_table="workflow_ticket" extra_data_field="ticket_id"/> </persisters> 11
  • 13. Criticism Workflow is not particularly Perl-ish, it is actually quite low on black magic Workflow is not as light weight as other CPAN/Perl modules You cannot just call Workflow->new and be good to go Yes - we are using patterns 12
  • 14. the Project Small community with some nice reference implementations (OpenXPKI etc.) High acceptance rate of patches and contributions Project Directives: Stability, we have people using this in production Extensibility, we want to make Workflow as useful as possible 13
  • 15. some history Initial implementation by Chris Winters (releases from 0.01 to 0.17). 11th. of October 2004 - Initial release to CPAN (0.10) 7th. of July 2006 Workflow handed over to me (jonasbn) for ongoing maintenance and development (my first release was 0.18) 19th. of September 2006 - Project set up at SourceForge Latest release 1.33, January 30th. 2010, yes we release early and often - well as early and often as it makes sense 14
  • 16. future stuff... In pursuit of stability: Aiming for higher test coverage, we have gone from: 63,4% (0.17) to 76.8% (1.33) Workflow does currently NOT work under Perl 5.12 and newer In pursuit of extensibility: Evaluation of issues in RT some of these are in regard to new features and not bugs In pursuit of a larger user base: Aiming for more and better documentation and examples, much of the documentation seems to reflect version 0.15 - so updating and proof reading is required 15
  • 17. about me Got interested in workflow after having worked with Oracle Workflow (a free commercial product, well free to the extent it does require Oracle) Got excited when discovering Workflow on CPAN - all free and all open source Took over from Chris Winters My own workflow projects stranded, but I still hope to this day to find use of it at some point - for now I only maintain Workflow... 16
  • 18. Resources http://perl-workflow.sourceforge.net/ Friendly community Documentation Wiki low-traffic mailing list Subversion repository RT queue, currently only holding two items, where one is an older patch not having been integrated yet Irregular releases, my bad jonasbn@cpan.org 17