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

domain specific languages for enterprise systems
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Domain-Specific Languages for Enterprise Systems

Jesper Andersen2 Patrick Bahr1 Fritz Henglein1 Tom Hvitved1

1University of Copenhagen, Department of Computer Science 2Configit A/S, Copenhagen

ISoLA ’14, 8th October, 2014

slide-2
SLIDE 2

Enterprise Resource Planning (ERP) Systems

Goal: integrate several software components that are essential for managing a business.

2 / 17

slide-3
SLIDE 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

slide-4
SLIDE 4

Traditional ERP Systems

Three tier architecture

◮ client ◮ application server ◮ relational database

3 / 17

slide-5
SLIDE 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

slide-6
SLIDE 6

Entering POETS

Process-oriented event-driven transaction systems

4 / 17

slide-7
SLIDE 7

Entering POETS

Process-oriented event-driven transaction systems

compact core system • customisable via DSLs • simple data model

4 / 17

slide-8
SLIDE 8

Entering POETS

Process-oriented event-driven transaction systems

compact core system • customisable via DSLs • simple data model

Contract engine Running contracts start contract register event end contract Event log events

4 / 17

slide-9
SLIDE 9

Entering POETS

Process-oriented event-driven transaction systems

compact core system • customisable via DSLs • simple data model

Contract engine Running contracts start contract register event end contract Report engine Report definitions add/delete report modify report query report Event log events updates

4 / 17

slide-10
SLIDE 10

Entering POETS

Process-oriented event-driven transaction systems

compact core system • customisable via DSLs • simple data model

Contract engine Running contracts start contract register event end contract Report engine Report definitions add/delete report modify report query report Event log events updates query results

4 / 17

slide-11
SLIDE 11

Entering POETS

Process-oriented event-driven transaction systems

compact core system • customisable via DSLs • simple data model

Contract engine Running contracts start contract register event end contract Report engine Report definitions add/delete report modify report query report Event log events updates query results

Goal: POETS reflects the ontological architecture for requirements

4 / 17

slide-12
SLIDE 12

The Language of POETS

Examples and Demo

  • 1. Ontology language
  • 2. Contract language
  • 3. Report language

5 / 17

slide-13
SLIDE 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

slide-14
SLIDE 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

slide-15
SLIDE 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

slide-16
SLIDE 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 1H then payment(lines, me, 10m)customer and me Delivery(sender s, receiver r, items i) where s ≡ me ∧ r ≡ customer ∧ i ≡ map (λx → x.item) lines due within 1W

7 / 17

slide-17
SLIDE 17

Demo

8 / 17

slide-18
SLIDE 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 1H then payment(lines, me, 10m)customer and me Delivery(sender s, receiver r, items i) where s ≡ me ∧ r ≡ customer ∧ i ≡ map (λx → x.item) lines due within 1W

9 / 17

slide-19
SLIDE 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 1H then payment(lines, me, 10m)customer and me Delivery(sender s, receiver r, items i) where s ≡ me ∧ r ≡ customer ∧ i ≡ map (λx → x.item) lines due within 1W then repair(map (λx → x.item) lines, customer, 3M)me

9 / 17

slide-20
SLIDE 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 5D remaining newDeadline’ then repair(items, customer, newDeadline − 5D + newDeadline’)me

10 / 17

slide-21
SLIDE 21

Demo

11 / 17

slide-22
SLIDE 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

slide-23
SLIDE 23

Demo

13 / 17

slide-24
SLIDE 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

slide-25
SLIDE 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

slide-26
SLIDE 26

Domain-Specific Languages for Enterprise Systems

Jesper Andersen2 Patrick Bahr1 Fritz Henglein1 Tom Hvitved1

1University of Copenhagen, Department of Computer Science 2Configit A/S, Copenhagen

ISoLA ’14, 8th October, 2014

slide-27
SLIDE 27

The Complete Picture

Contract Engine

  • manage templates
  • manage contracts
  • retrieve contracts
  • register transactions

Report Engine

  • manage reports
  • query reports

Entity Store

  • manage entities

Rule Engine

  • manage rules
  • apply rules

Event log Data Model

  • manage data definitions
  • retrieve data definitions

information pushed information pulled

17 / 17