domain specific languages for enterprise systems
play

Domain-Specific Languages for Enterprise Systems Jesper Andersen 2 - PowerPoint PPT Presentation

Domain-Specific Languages for Enterprise Systems Jesper Andersen 2 Patrick Bahr 1 Fritz Henglein 1 Tom Hvitved 1 1 University of Copenhagen, Department of Computer Science 2 Configit A/S, Copenhagen ISoLA 14, 8th October, 2014 Enterprise


  1. Domain-Specific Languages for Enterprise Systems Jesper Andersen 2 Patrick Bahr 1 Fritz Henglein 1 Tom Hvitved 1 1 University of Copenhagen, Department of Computer Science 2 Configit A/S, Copenhagen ISoLA ’14, 8th October, 2014

  2. Enterprise Resource Planning (ERP) Systems Goal: integrate several software components that are essential for managing a business. 2 / 17

  3. Enterprise Resource Planning (ERP) Systems Goal: integrate several software components that are essential for managing a business. ERP systems integrate ◮ Financial Management ◮ Supply Chain Management ◮ Manufacturing Resource Planning ◮ Human Resource Management ◮ Customer Relationship Management ◮ . . . 2 / 17

  4. Traditional ERP Systems Three tier architecture ◮ client ◮ application server ◮ relational database 3 / 17

  5. Traditional ERP Systems Three tier architecture ◮ client ◮ application server ◮ relational database Shortcomings ◮ database combines transactional data & implicit process state ◮ processes are implemented in general purpose language ◮ semantic gap between specification and implementation ◮ large monolithic systems ◮ hard to maintain 3 / 17

  6. Entering POETS Process-oriented event-driven transaction systems 4 / 17

  7. Entering POETS Process-oriented event-driven transaction systems compact core system • customisable via DSLs • simple data model 4 / 17

  8. Entering POETS Process-oriented event-driven transaction systems compact core system • customisable via DSLs • simple data model Contract engine Running contracts events start contract Event register event log end contract 4 / 17

  9. Entering POETS Process-oriented event-driven transaction systems compact core system • customisable via DSLs • simple data model Contract engine Report engine Running Report contracts definitions updates events start contract add/delete report Event register event modify report log end contract query report 4 / 17

  10. Entering POETS Process-oriented event-driven transaction systems compact core system • customisable via DSLs • simple data model query results Contract engine Report engine Running Report contracts definitions updates events start contract add/delete report Event register event modify report log end contract query report 4 / 17

  11. Entering POETS Process-oriented event-driven transaction systems compact core system • customisable via DSLs • simple data model query results Contract engine Report engine Running Report contracts definitions updates events start contract add/delete report Event register event modify report log end contract query report Goal: POETS reflects the ontological architecture for requirements 4 / 17

  12. The Language of POETS Examples and Demo 1. Ontology language 2. Contract language 3. Report language 5 / 17

  13. The Language of POETS Examples and Demo 1. Ontology language data model 2. Contract language business processes 3. Report language high-level data 5 / 17

  14. The Language of POETS Examples and Demo 1. Ontology language data model 2. Contract language business processes 3. Report language high-level data Example: a bike shop 5 / 17

  15. Ontology of a Bike Shop OrderLine is Data . OrderLine has an Item . OrderLine has Money called unitPrice . OrderLine has a Real called vatPercentage . Item is a Resource . Item has an ItemType . Item has a Real called quantity . Bicycle is an ItemType . Bicycle has a String called model . 6 / 17

  16. The Process of Selling a Bike clause sale ( lines : [OrderLine]) � me : � Me � , customer : � Customer �� = � me � IssueInvoice( sender s , receiver r , orderLines sl ) where s ≡ me ∧ r ≡ customer ∧ sl ≡ lines ∧ inStock lines due within 1 H then payment ( lines , me , 10 m ) � customer � and � me � Delivery( sender s , receiver r , items i ) where s ≡ me ∧ r ≡ customer ∧ i ≡ map ( λ x → x . item ) lines due within 1 W 7 / 17

  17. Demo 8 / 17

  18. Adding a Repair Service clause sale ( lines : [OrderLine]) � me : � Me � , customer : � Customer �� = � me � IssueInvoice( sender s , receiver r , orderLines sl ) where s ≡ me ∧ r ≡ customer ∧ sl ≡ lines ∧ inStock lines due within 1 H then payment ( lines , me , 10 m ) � customer � and � me � Delivery( sender s , receiver r , items i ) where s ≡ me ∧ r ≡ customer ∧ i ≡ map ( λ x → x . item ) lines due within 1 W 9 / 17

  19. Adding a Repair Service clause sale ( lines : [OrderLine]) � me : � Me � , customer : � Customer �� = � me � IssueInvoice( sender s , receiver r , orderLines sl ) where s ≡ me ∧ r ≡ customer ∧ sl ≡ lines ∧ inStock lines due within 1 H then payment ( lines , me , 10 m ) � customer � and � me � Delivery( sender s , receiver r , items i ) where s ≡ me ∧ r ≡ customer ∧ i ≡ map ( λ x → x . item ) lines due within 1 W then repair ( map ( λ x → x . item ) lines , customer , 3 M ) � me � 9 / 17

  20. Adding a Repair Service (cont.) clause repair ( items : [Item], customer : � Customer � , deadline : Duration ) � me : � Me �� = when RequestRepair( sender s , receiver r , items i ) where s ≡ customer ∧ r ≡ me ∧ subset i items due within deadline remaining newDeadline then � me � Repair( sender s , receiver r , items its ) where s ≡ me ∧ r ≡ customer ∧ i ≡ its due within 5 D remaining newDeadline ’ then repair ( items , customer , newDeadline �−� 5 D � + � newDeadline ’) � me � 10 / 17

  21. Demo 11 / 17

  22. Reports report : CashFlowStatement report = let payments = [ payment | payment : Payment ← transactions ] mRevenues = [ payment | payment ← payments , isMe ( payment . receiver )] mExpenses = [ payment | payment ← payments , isMe ( payment . sender )] in CashFlowStatement { revenues = mRevenues , expenses = mExpenses , revenueTotal = sumPayments mRevenues , expenseTotal = sumPayments mExpenses } transactions : [Transaction] transactions = [ tr . transaction | tr : TransactionEvent ← events ] 12 / 17

  23. Demo 13 / 17

  24. Implementation ◮ server & DSLs implemented in Haskell ◮ client software for Android ◮ case studies complete source code & documentation available online: https://bitbucket.org/jespera/poets/ 14 / 17

  25. Contributions ◮ database = log + reports ◮ multiparty contracts with real-time constraints ◮ full recoverability and auditability (data and specification) ◮ safe run-time changes of data model, contracts and reports 15 / 17

  26. Domain-Specific Languages for Enterprise Systems Jesper Andersen 2 Patrick Bahr 1 Fritz Henglein 1 Tom Hvitved 1 1 University of Copenhagen, Department of Computer Science 2 Configit A/S, Copenhagen ISoLA ’14, 8th October, 2014

  27. The Complete Picture Contract Engine Report Engine - manage templates Entity Store - manage reports - manage contracts - manage entities - query reports - retrieve contracts - register transactions Rule Engine Data Model Event - manage rules - manage data definitions log - apply rules - retrieve data definitions information pushed information pulled 17 / 17

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend