1 / 19

Pimp my workflow system

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

bree
Télécharger la présentation

Pimp my workflow system

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pimp my workflow system A tool preview of iTasks 2.0 Bas Lijnse 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 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 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 FP-dag 2009

  5. iTasks architecture 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 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) FP-dag 2009

  8. User experience impression 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 FP-dag 2009

  10. Enter stage left: itasks 2.0 FP-dag 2009

  11. Goals • Separation between workflow calculation and UI • Create a better user experience • Standardize communication • Clean up the codebase 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 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 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 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 FP-dag 2009

  16. 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

  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 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 FP-dag 2009

  19. FP-dag 2009

More Related