SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Kaleo Workflow and Liferay portal
Overview and lessons learnt


Willem Vermeer
Worth IT Den Haag
Kaleo Workflow


“allows a user to define any number of simple to
complex business processes/workflows, deploy
them, and manage them through a portal interface.
The processes have knowledge of users, groups and
roles. You don’t have to write a single line of code
to accomplish this: all you have to do is create a
single XML document.”




                      WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Terminology

A workflow

- is executed by an asynchronous engine

- can be applied to Liferay Assets (including your
own)

- consists of states, tasks, transitions, actions and
notifications


  Insert User Group
 Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Task assignation


A task can be assigned to

- a certain user

- a role

Important: only user with assigned task can
transition it to the next task or state



  Insert User Group
 Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Example

                                                       user
             start                      submit


                       reject             submit

 state                                             reviewer
 task                                   review           accept       accepted
transition

  role
Insert User Group
Logo (please resize)            WWW.LIFERAY.COM    WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow in action




                       demo




Insert User Group
Logo (please resize)     WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow Definition



Liferay EE has a graphical editor to create/modify
workflows


Liferay CE has XML




 Insert User Group
 Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow definition part 1
<workflow-definition
      xmlns="urn:liferay.com:liferay-workflow_6.1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:liferay.com:liferay-workflow_6.1.0
http://www.liferay.com/dtd/liferay-workflow-
definition_6_1_0.xsd"
>
      <name>LNLUG Demo</name>
      <description>Two role, two tasks workflow
example</description>
      <version>1</version>
      <state>
            <name>created</name>
            <initial>true</initial>
            <transitions>
                  <transition>
                        <name>submit</name>
                        <target>submit</target>
                  </transition>
            </transitions>
      </state>
Insert User Group
Logo (please resize)       WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow definition part 2
       <task>
                <name>submit</name>
                <actions>
                       <action>
                               <name>submit</name>
                               <script>
                                      <![CDATA[
Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStat
us(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("pendi
ng"), workflowContext);
                                      ]]>
                               </script>
                               <script-language>javascript</script-language>
                               <execution-type>onAssignment</execution-type>
                       </action>
                </actions>
                <assignments>
                       <user />
                </assignments>
                <transitions>
                       <transition>
                               <name>submit</name>
                               <target>review</target>
                       </transition>
                </transitions>
        </task>



Insert User Group
Logo (please resize)              WWW.LIFERAY.COM     WWW.FACEBOOK.COOM/LIFERAY    @LIFERAY
Workflow definition part 3
        <task>
                 <name>review</name>
                 <actions>
                          <notification>
                                   <name>Review Notification</name>
                                   <template>You have a new submission waiting for your
review in the workflow.</template>
                                   <template-language>text</template-language>
                                   <notification-type>email</notification-type>
                                   <execution-type>onAssignment</execution-type>
                          </notification>
                 </actions>
                 <assignments>
                          <roles>
                                   <role>
                                            <role-type>regular</role-type>
                                            <name>Application Reviewer</name>
                                   </role>
                          </roles>
                 </assignments>
                 <transitions>
                          <transition>
                                   <name>approve</name>
                                   <target>approved</target>
                          </transition>
                          <transition>
                                   <name>reject</name>
                                   <target>submit</target>
                                   <default>false</default>
                          </transition>
                 </transitions>
         </task>

Insert User Group
Logo (please resize)                   WWW.LIFERAY.COM         WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow definition part 4

       <state>
              <name>approved</name>
              <actions>
                     <action>
                            <name>approve</name>
                            <script>
                                   <![CDATA[
Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.u
pdateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstan
ts.toStatus("approved"), workflowContext);
                                   ]]>
                            </script>
                            <script-language>javascript</script-language>
                            <execution-type>onEntry</execution-type>
                     </action>
              </actions>
       </state>
</workflow-definition>




Insert User Group
Logo (please resize)           WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
How to apply a workflow to a custom asset


                       Workflow engine


                       WorkflowHandler



                       Your portlet app

Insert User Group
Logo (please resize)     WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Workflow handler


public abstract interface WorkflowHandler {

     public abstract java.lang.String getTitle(
          long assetId, Locale locale);

     public abstract java.lang.Object updateStatus(
          int status, Map workflowContext)
          throws PortalException, SystemException;

     // more...
}




Insert User Group
Logo (please resize)    WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Demo app


CreateApplication portlet to make and submit an
application

ListApplication portlet to display overview of
applications

Uses control panel for task transitions

                        demo

Insert User Group
Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Things to like about Kaleo workflow



Nice, deep integration with Liferay (users, roles)

Control panel access to workflow tasks

Simplicity




Insert User Group
Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Room for improvement
Extensibility
- limited to scripting in workflow definition

Flexibility
- can't change definition once a workflow has started

Thread safety
- workflow engine is 100% thread UNsafe

Error recovery
- What's wrong with my XML?


Insert User Group
Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY
Questions?




       @willemvermeer

Insert User Group
Logo (please resize)   WWW.LIFERAY.COM   WWW.FACEBOOK.COOM/LIFERAY   @LIFERAY

Weitere ähnliche Inhalte

Was ist angesagt?

Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoMaxime Najim
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowRolf Kremer
 
RichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsRichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsMax Katz
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Fahad Golra
 
JSF basics
JSF basicsJSF basics
JSF basicsairbo
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WSKatrien Verbert
 
Spring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsSpring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsGuy Nir
 
Spring MVC
Spring MVCSpring MVC
Spring MVCyuvalb
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Arun Gupta
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSMax Katz
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Peter R. Egli
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSCarol McDonald
 
Jax ws
Jax wsJax ws
Jax wsF K
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2Jim Driscoll
 

Was ist angesagt? (20)

Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San Diego
 
JAX-WS Basics
JAX-WS BasicsJAX-WS Basics
JAX-WS Basics
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
 
RichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsRichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF Applications
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
JSF basics
JSF basicsJSF basics
JSF basics
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
 
Spring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topicsSpring 3.x - Spring MVC - Advanced topics
Spring 3.x - Spring MVC - Advanced topics
 
Workflow for XPages
Workflow for XPagesWorkflow for XPages
Workflow for XPages
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
 
Spring MVC Basics
Spring MVC BasicsSpring MVC Basics
Spring MVC Basics
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
 
Java server faces
Java server facesJava server faces
Java server faces
 
Introduction to jsf 2
Introduction to jsf 2Introduction to jsf 2
Introduction to jsf 2
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)
 
Jsf intro
Jsf introJsf intro
Jsf intro
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
 
Jax ws
Jax wsJax ws
Jax ws
 
A Complete Tour of JSF 2
A Complete Tour of JSF 2A Complete Tour of JSF 2
A Complete Tour of JSF 2
 

Andere mochten auch

Liferay Devcon Presentation on Dynamic Forms with Liferay Workflow
Liferay Devcon Presentation on Dynamic Forms with Liferay WorkflowLiferay Devcon Presentation on Dynamic Forms with Liferay Workflow
Liferay Devcon Presentation on Dynamic Forms with Liferay WorkflowWillem Vermeer
 
Search Intelligently - Liferay Symposium North America 2016, Chicago, USA
Search Intelligently - Liferay Symposium North America 2016, Chicago, USASearch Intelligently - Liferay Symposium North America 2016, Chicago, USA
Search Intelligently - Liferay Symposium North America 2016, Chicago, USAAndré Ricardo Barreto de Oliveira
 
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 WorkflowCurso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 WorkflowDavid Vaquero
 
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosCurso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosDavid Vaquero
 
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...Alfresco Software
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + WearablesZeno Rocha
 
What to look for in a Digital Experience Platform?
What to look for in a Digital Experience Platform?What to look for in a Digital Experience Platform?
What to look for in a Digital Experience Platform?Ruud Kluivers
 
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -akiko_pusu
 
ある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したKohei Nakamura
 
Liferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalLiferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalNavin Agarwal
 
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」Taku Yajima
 
Redmineの9年間の歩みを振り返ってみる
Redmineの9年間の歩みを振り返ってみるRedmineの9年間の歩みを振り返ってみる
Redmineの9年間の歩みを振り返ってみるGo Maeda
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話Ryou Soda
 
Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Go Maeda
 
講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2Hidehisa Matsutani
 
Redmine 10周年記念 10年ふりかえり
Redmine 10周年記念 10年ふりかえりRedmine 10周年記念 10年ふりかえり
Redmine 10周年記念 10年ふりかえりGo Maeda
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Yuuki Nara
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Go Maeda
 
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)Kuniharu(州晴) AKAHANE(赤羽根)
 

Andere mochten auch (20)

Liferay Devcon Presentation on Dynamic Forms with Liferay Workflow
Liferay Devcon Presentation on Dynamic Forms with Liferay WorkflowLiferay Devcon Presentation on Dynamic Forms with Liferay Workflow
Liferay Devcon Presentation on Dynamic Forms with Liferay Workflow
 
Search Intelligently - Liferay Symposium North America 2016, Chicago, USA
Search Intelligently - Liferay Symposium North America 2016, Chicago, USASearch Intelligently - Liferay Symposium North America 2016, Chicago, USA
Search Intelligently - Liferay Symposium North America 2016, Chicago, USA
 
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 WorkflowCurso Liferay 6.2: Unidad Didáctica 05 Workflow
Curso Liferay 6.2: Unidad Didáctica 05 Workflow
 
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosCurso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
 
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...
Liferay & Alfresco: Delivering Enterprise Content Through a Portal 02 August ...
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + Wearables
 
What to look for in a Digital Experience Platform?
What to look for in a Digital Experience Platform?What to look for in a Digital Experience Platform?
What to look for in a Digital Experience Platform?
 
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
 
ある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意した
 
Liferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalLiferay architecture By Navin Agarwal
Liferay architecture By Navin Agarwal
 
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」
jus研究会名古屋大会「Redmineでプロジェクトを【見える化】しよう!」
 
Redmineの9年間の歩みを振り返ってみる
Redmineの9年間の歩みを振り返ってみるRedmineの9年間の歩みを振り返ってみる
Redmineの9年間の歩みを振り返ってみる
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話
 
Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫
 
講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2
 
Redmine 10周年記念 10年ふりかえり
Redmine 10周年記念 10年ふりかえりRedmine 10周年記念 10年ふりかえり
Redmine 10周年記念 10年ふりかえり
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
情報システム部門のタスク管理とIT全般統制 ~ Excel管理からの脱却 ~ (ITS Redmine #RxTstudy #5)
 
運用業務でのRedmine
運用業務でのRedmine運用業務でのRedmine
運用業務でのRedmine
 

Ähnlich wie Kaleo workflow in Liferay

Using JIRA to build a culture of innovation - Atlassian Summit 2012
Using JIRA to build a culture of innovation - Atlassian Summit 2012Using JIRA to build a culture of innovation - Atlassian Summit 2012
Using JIRA to build a culture of innovation - Atlassian Summit 2012Atlassian
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Alex Soto
 
How to perform debounce in react
How to perform debounce in reactHow to perform debounce in react
How to perform debounce in reactBOSC Tech Labs
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!cyrilpicat
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with MavenArcadian Learning
 
ActiveResource & REST
ActiveResource & RESTActiveResource & REST
ActiveResource & RESTRobbert
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsrfelden
 
]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3Klaus Hofeditz
 
React 16: new features and beyond
React 16: new features and beyondReact 16: new features and beyond
React 16: new features and beyondArtjoker
 
Dive into React Performance
Dive into React PerformanceDive into React Performance
Dive into React PerformanceChing Ting Wu
 
BPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced WorkflowsBPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced WorkflowsAlfresco Software
 
Comparison of different access controls
Comparison of different access controlsComparison of different access controls
Comparison of different access controlsRashmi Nair
 
How to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHow to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHendy Irawan
 
How to create a magento controller in magento extension
How to create a magento controller in magento extensionHow to create a magento controller in magento extension
How to create a magento controller in magento extensionHendy Irawan
 
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac..."Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...Fwdays
 
BPM-1 Introduction to Advanced Workflows
BPM-1 Introduction to Advanced WorkflowsBPM-1 Introduction to Advanced Workflows
BPM-1 Introduction to Advanced WorkflowsAlfresco Software
 

Ähnlich wie Kaleo workflow in Liferay (20)

Using JIRA to build a culture of innovation - Atlassian Summit 2012
Using JIRA to build a culture of innovation - Atlassian Summit 2012Using JIRA to build a culture of innovation - Atlassian Summit 2012
Using JIRA to build a culture of innovation - Atlassian Summit 2012
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
 
Maven POM
Maven POMMaven POM
Maven POM
 
Let's react - Meetup
Let's react - MeetupLet's react - Meetup
Let's react - Meetup
 
How to perform debounce in react
How to perform debounce in reactHow to perform debounce in react
How to perform debounce in react
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with Maven
 
ActiveResource & REST
ActiveResource & RESTActiveResource & REST
ActiveResource & REST
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developments
 
]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3]project-open[ Workflow Developer Tutorial Part 3
]project-open[ Workflow Developer Tutorial Part 3
 
React 16: new features and beyond
React 16: new features and beyondReact 16: new features and beyond
React 16: new features and beyond
 
Dive into React Performance
Dive into React PerformanceDive into React Performance
Dive into React Performance
 
BPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced WorkflowsBPM-2 Introduction to Advanced Workflows
BPM-2 Introduction to Advanced Workflows
 
Comparison of different access controls
Comparison of different access controlsComparison of different access controls
Comparison of different access controls
 
How to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento ExtensionHow to Create A Magento Adminhtml Controller in Magento Extension
How to Create A Magento Adminhtml Controller in Magento Extension
 
How to create a magento controller in magento extension
How to create a magento controller in magento extensionHow to create a magento controller in magento extension
How to create a magento controller in magento extension
 
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac..."Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
"Full Stack frameworks or a story about how to reconcile Front (good) and Bac...
 
BPM-1 Introduction to Advanced Workflows
BPM-1 Introduction to Advanced WorkflowsBPM-1 Introduction to Advanced Workflows
BPM-1 Introduction to Advanced Workflows
 
Struts 1
Struts 1Struts 1
Struts 1
 
Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)
 

Kürzlich hochgeladen

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
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
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
 

Kürzlich hochgeladen (20)

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)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
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
 

Kaleo workflow in Liferay

  • 1. Kaleo Workflow and Liferay portal Overview and lessons learnt Willem Vermeer Worth IT Den Haag
  • 2. Kaleo Workflow “allows a user to define any number of simple to complex business processes/workflows, deploy them, and manage them through a portal interface. The processes have knowledge of users, groups and roles. You don’t have to write a single line of code to accomplish this: all you have to do is create a single XML document.” WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 3. Terminology A workflow - is executed by an asynchronous engine - can be applied to Liferay Assets (including your own) - consists of states, tasks, transitions, actions and notifications Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 4. Task assignation A task can be assigned to - a certain user - a role Important: only user with assigned task can transition it to the next task or state Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 5. Example user start submit reject submit state reviewer task review accept accepted transition role Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 6. Workflow in action demo Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 7. Workflow Definition Liferay EE has a graphical editor to create/modify workflows Liferay CE has XML Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 8. Workflow definition part 1 <workflow-definition xmlns="urn:liferay.com:liferay-workflow_6.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:liferay.com:liferay-workflow_6.1.0 http://www.liferay.com/dtd/liferay-workflow- definition_6_1_0.xsd" > <name>LNLUG Demo</name> <description>Two role, two tasks workflow example</description> <version>1</version> <state> <name>created</name> <initial>true</initial> <transitions> <transition> <name>submit</name> <target>submit</target> </transition> </transitions> </state> Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 9. Workflow definition part 2 <task> <name>submit</name> <actions> <action> <name>submit</name> <script> <![CDATA[ Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStat us(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("pendi ng"), workflowContext); ]]> </script> <script-language>javascript</script-language> <execution-type>onAssignment</execution-type> </action> </actions> <assignments> <user /> </assignments> <transitions> <transition> <name>submit</name> <target>review</target> </transition> </transitions> </task> Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 10. Workflow definition part 3 <task> <name>review</name> <actions> <notification> <name>Review Notification</name> <template>You have a new submission waiting for your review in the workflow.</template> <template-language>text</template-language> <notification-type>email</notification-type> <execution-type>onAssignment</execution-type> </notification> </actions> <assignments> <roles> <role> <role-type>regular</role-type> <name>Application Reviewer</name> </role> </roles> </assignments> <transitions> <transition> <name>approve</name> <target>approved</target> </transition> <transition> <name>reject</name> <target>submit</target> <default>false</default> </transition> </transitions> </task> Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 11. Workflow definition part 4 <state> <name>approved</name> <actions> <action> <name>approve</name> <script> <![CDATA[ Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.u pdateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstan ts.toStatus("approved"), workflowContext); ]]> </script> <script-language>javascript</script-language> <execution-type>onEntry</execution-type> </action> </actions> </state> </workflow-definition> Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 12. How to apply a workflow to a custom asset Workflow engine WorkflowHandler Your portlet app Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 13. Workflow handler public abstract interface WorkflowHandler { public abstract java.lang.String getTitle( long assetId, Locale locale); public abstract java.lang.Object updateStatus( int status, Map workflowContext) throws PortalException, SystemException; // more... } Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 14. Demo app CreateApplication portlet to make and submit an application ListApplication portlet to display overview of applications Uses control panel for task transitions demo Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 15. Things to like about Kaleo workflow Nice, deep integration with Liferay (users, roles) Control panel access to workflow tasks Simplicity Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 16. Room for improvement Extensibility - limited to scripting in workflow definition Flexibility - can't change definition once a workflow has started Thread safety - workflow engine is 100% thread UNsafe Error recovery - What's wrong with my XML? Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY
  • 17. Questions? @willemvermeer Insert User Group Logo (please resize) WWW.LIFERAY.COM WWW.FACEBOOK.COOM/LIFERAY @LIFERAY