19
FP-dag 2009 1 Pimp my workflow system A tool preview of iTasks 2.0 Bas Lijnse

Pimp my workflow system

  • Upload
    bree

  • View
    70

  • Download
    3

Embed Size (px)

DESCRIPTION

Pimp my workflow system. A tool preview of iTasks 2.0 Bas Lijnse. Some context. iTasks is a workflow management system Web based Based on functional combinators Heavily type driven (generic programming) History Initiated by Rinus Plasmeijer in 2005 - PowerPoint PPT Presentation

Citation preview

Page 1: Pimp my workflow system

FP-dag 2009 1

Pimp my workflow system

A tool preview of iTasks 2.0

Bas Lijnse

Page 2: Pimp my workflow system

FP-dag 2009 2

Some context• iTasks is a workflow management system

– Web based– Based on functional combinators– Heavily type driven (generic programming)

• History– Initiated by Rinus Plasmeijer in 2005– Improved by Pieter Koopman, Peter Achten, Jan

Martin Jansen, John van Groningen, Thomas van Noort and Bas Lijnse

Page 3: Pimp my workflow system

FP-dag 2009 3

What is this talk about?

• Share what is going on with our iTasks research

• Show a nice demo• Invite you all to comment on the new

developments

Page 4: Pimp my workflow system

FP-dag 2009 4

Status Quo

• Combinator language has stabilized– Can express all common workflow patterns

• Framework capable of supporting many workflow scenarios– Task execution on the client (SAPL)– Support for editor plugins (iEditors)

• Well defined semantics of combinators

Page 5: Pimp my workflow system

FP-dag 2009 5

iTasks architecture

Page 6: Pimp my workflow system

FP-dag 2009 6

Single source specification

• Developer only specifies workflows by means of combinator expressions

• Everything else is either available or generated– User interface– Data communication– Identity/user management

Page 7: Pimp my workflow system

FP-dag 2009 7

Example task expressions

enterNameAndAge :: Task (String,Int)enterNameAndAge = [Text “Enter your name and age”] ?>> editTask “Done” createDefault doubleCheckedTask :: (Task a) -> Task (Bool,a)doubleCheckedTask t = t =>> \result -> [Text “Are you sure?”] ?>> verdictTask =>> \verdict -> return_V (verdict,result)where verdictTask :: Task Bool verdictTask = (buttonTask “Yes” #>> return_V True) -||- (buttonTask “No” #>> return_V False)

Page 8: Pimp my workflow system

FP-dag 2009 8

User experience impression

Page 9: Pimp my workflow system

FP-dag 2009 9

However…

• User interface has been neglected– Focus on developing combinators instead

of user experience• Framework has collected cruft

– Features have been added, nothing removed

– Many parts have become intertwined

Page 10: Pimp my workflow system

FP-dag 2009 10

Enter stage left: itasks 2.0

Page 11: Pimp my workflow system

FP-dag 2009 11

Goals

• Separation between workflow calculation and UI

• Create a better user experience• Standardize communication• Clean up the codebase

Page 12: Pimp my workflow system

FP-dag 2009 12

Challenges

• User interface and workflow heavily intertwined

• Changes needed almost everywhere in the framework

• Not always clear which parts will be redundant in the new architecture

Page 13: Pimp my workflow system

FP-dag 2009 13

Concrete changes• Separation between workflow and UI

– Client is primary driver– Only data structures are communicated

• ExtJS javascript Ajax GUI– But we maintain generic user interface generation

for tasks• Communication standardized on JSON

format• New user management framework

Page 14: Pimp my workflow system

FP-dag 2009 14

Time for action

• Demo of a simple workflow• Which is…

– Multi-user– Part sequential, part parallel

• Aimed to demonstrate the improvements, not complex workflow

Page 15: Pimp my workflow system

FP-dag 2009 15

Informal “bidding” workflow

• A description of a product to be purchased is made• A number of potential suppliers is selected from a

pool of suppliers• Each supplier is asked to quote a price for the

requested product• The cheapest supplier is automatically suggested• This suggestion is either accepted or another

suppliers is selected manually• A confirmation is sent to the chosen supplier

Page 16: Pimp my workflow system

FP-dag 2009 16

iTasks “bidding” workflow

purchaseTask :: Task VoidpurchaseTask = definePurchase =>> \purchase -> selectSuppliers =>> \suppliers -> collectBids purchase suppliers =>> \bids -> selectBid bids =>> \bid -> confirmBid purchase bid

collectBids :: String [(Int,String)] -> Task [((Int,String),Real)]collectBids purchase suppliers = andTasks [("Bid for " +++ purchase +++ " from " +++ name, uid @: ("Bid request regarding " +++ purchase, collectBid purchase supplier)) \\ supplier =: (uid,name) <- suppliers]where collectBid :: String (Int,String) -> Task ((Int,String),Real) collectBid purchase bid = [ Text "Please make a bid to supply ",ITag [] [Text purchase] , HrTag [] ] ?>> editTask "Ok" createDefault =>> \price -> return_V (bid, price)

Page 17: Pimp my workflow system

FP-dag 2009 17

What is next?• Tie up the loose ends in the GUI

– Support for concurrent workflows– Integration of the SAPL interpreter

• Interaction with the (SOA) world– Publishing workflows as webservices and

embedding external services in workflows• Do more with workflow meta and

management information

Page 18: Pimp my workflow system

FP-dag 2009 18

What is next?

• Use in course on Business Rules and Business Process Management– Information science students– Practical exercises

• Investigate how the system can be applied in crisis management and military planning

Page 19: Pimp my workflow system

FP-dag 2009 19