190 likes | 343 Views
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
E N D
Pimp my workflow system A tool preview of iTasks 2.0 Bas Lijnse FP-dag 2009
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 FP-dag 2009
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 FP-dag 2009
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 FP-dag 2009
iTasks architecture FP-dag 2009
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 FP-dag 2009
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) FP-dag 2009
User experience impression FP-dag 2009
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 FP-dag 2009
Enter stage left: itasks 2.0 FP-dag 2009
Goals • Separation between workflow calculation and UI • Create a better user experience • Standardize communication • Clean up the codebase FP-dag 2009
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 FP-dag 2009
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 FP-dag 2009
Time for action • Demo of a simple workflow • Which is… • Multi-user • Part sequential, part parallel • Aimed to demonstrate the improvements, not complex workflow FP-dag 2009
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 FP-dag 2009
iTasks “bidding” workflow purchaseTask :: Task Void purchaseTask = 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) FP-dag 2009
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 FP-dag 2009
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 FP-dag 2009