Last active
June 23, 2019 14:22
-
-
Save deepu105/127b220d0c7a3bbf06386cef8128d2f5 to your computer and use it in GitHub Desktop.
A JDL to create an e-commerce store microservice architecture
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
application { | |
config { | |
baseName store, | |
applicationType gateway, | |
packageName com.jhipster.demo.store, | |
serviceDiscoveryType eureka, | |
authenticationType jwt, | |
prodDatabaseType mysql, | |
cacheProvider hazelcast, | |
buildTool gradle, | |
clientFramework react, | |
testFrameworks [protractor] | |
} | |
entities * | |
} | |
application { | |
config { | |
baseName invoice, | |
applicationType microservice, | |
packageName com.jhipster.demo.invoice, | |
serviceDiscoveryType eureka, | |
authenticationType jwt, | |
prodDatabaseType mysql, | |
buildTool gradle, | |
serverPort 8081 | |
} | |
entities Invoice, Shipment | |
} | |
application { | |
config { | |
baseName notification, | |
applicationType microservice, | |
packageName com.jhipster.demo.notification, | |
serviceDiscoveryType eureka, | |
authenticationType jwt, | |
databaseType mongodb, | |
cacheProvider no, | |
enableHibernateCache false, | |
buildTool gradle, | |
serverPort 8082 | |
} | |
entities Notification | |
} | |
/* Entities for Store Gateway */ | |
/** Product sold by the Online store */ | |
entity Product { | |
name String required | |
description String | |
price BigDecimal required min(0) | |
size Size required | |
image ImageBlob | |
} | |
enum Size { | |
S, M, L, XL, XXL | |
} | |
entity ProductCategory { | |
name String required | |
description String | |
} | |
entity Customer { | |
firstName String required | |
lastName String required | |
gender Gender required | |
email String required pattern(/^[^@\s]+@[^@\s]+\.[^@\s]+$/) | |
phone String required | |
addressLine1 String required | |
addressLine2 String | |
city String required | |
country String required | |
} | |
enum Gender { | |
MALE, FEMALE, OTHER | |
} | |
entity ProductOrder { | |
placedDate Instant required | |
status OrderStatus required | |
code String required | |
invoiceId Long | |
} | |
enum OrderStatus { | |
COMPLETED, PENDING, CANCELLED | |
} | |
entity OrderItem { | |
quantity Integer required min(0) | |
totalPrice BigDecimal required min(0) | |
status OrderItemStatus required | |
} | |
enum OrderItemStatus { | |
AVAILABLE, OUT_OF_STOCK, BACK_ORDER | |
} | |
relationship OneToOne { | |
Customer{user(login) required} to User | |
} | |
relationship ManyToOne { | |
OrderItem{product(name) required} to Product | |
} | |
relationship OneToMany { | |
Customer{order} to ProductOrder{customer(email) required}, | |
ProductOrder{orderItem} to OrderItem{order(code) required} , | |
ProductCategory{product} to Product{productCategory(name)} | |
} | |
service Product, ProductCategory, Customer, ProductOrder, OrderItem with serviceClass | |
paginate Product, Customer, ProductOrder, OrderItem with pagination | |
/* Entities for Invoice microservice */ | |
entity Invoice { | |
code String required | |
date Instant required | |
details String | |
status InvoiceStatus required | |
paymentMethod PaymentMethod required | |
paymentDate Instant required | |
paymentAmount BigDecimal required | |
} | |
enum InvoiceStatus { | |
PAID, ISSUED, CANCELLED | |
} | |
entity Shipment { | |
trackingCode String | |
date Instant required | |
details String | |
} | |
enum PaymentMethod { | |
CREDIT_CARD, CASH_ON_DELIVERY, PAYPAL | |
} | |
relationship OneToMany { | |
Invoice{shipment} to Shipment{invoice(code) required} | |
} | |
service Invoice, Shipment with serviceClass | |
paginate Invoice, Shipment with pagination | |
microservice Invoice, Shipment with invoice | |
/* Entities for notification microservice */ | |
entity Notification { | |
date Instant required | |
details String | |
sentDate Instant required | |
format NotificationType required | |
userId Long required | |
productId Long required | |
} | |
enum NotificationType { | |
EMAIL, SMS, PARCEL | |
} | |
microservice Notification with notification |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment