from domain-driven design to internal domain-specific languages?
TRANSCRIPT
modeling{ from :domain_driven_design to :internal_dsls?}
#Phillip Calçado#http://fragmental.tw#[email protected]
Turing Complete
An User belongs to a group. He must authenticate
using a login.
class Userattr_reader :login, :group
def authenticate(login)#do stuff
endend
Dev
Business
class, module, def...
User, Group, Bill...
User pays Bill from his GroupApplication
DomainModel
Language
1001010100110010101010101010111010111010001000001111100000
SELECT u.name, g.name
FROM (SELECT p.name FROM USER u, PEOPLE p WHERE u.status=’published’ AND u.id = p.id) u,GROUP g
WHERE g.id = u.group_idANDg.type = ‘ADMIN’
class, module, def...
User, Group, Bill...
User pays Bill from his GroupApplication
DomainModel
Language
1001010100110010101010101010111010111010001000001111100000
User, Group, Bill...
User pays Bill from his GroupApplication
DomainLanguage
1001010100110010101010101010111010111010001000001111100000
An User belongs to a group. He must authenticate
using a login.
authenticate ‘phill’
Dev
Business
External DSLs
External DSLs
Internal DSLs
authenticate
loginpassword
User
namebirth_date
Person
Group1*Customer
['20080102', '18:23:06,026'] - (INFO "Program started")['20080102', '18:23:07,027'] - (DEBUG "Infra-check")['20080102', '18:23:08,028'] - (INFO "Checking classloaders")['20080102', '18:23:09,029'] - (WARN "Classloader not set properly")['20080102', '18:23:10,030'] - (ERROR <<TEXT Could not load the org.jboss.webservice.server.Service interceptorjava.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.webservice.server.ServiceEndpointInterceptor at org.jboss.mx.loading(LoadMgr3.java:212) at org.jboss.mx.loading(RepositoryClassLoader.java:490)
at org.jboss.mx.loading(RepositoryClassLoader.java:392) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at org.jboss.util.loading.(DelegatingClassLoader.java:89) at org.jboss.mx.loadClass(LoaderRepositoryClassLoader.java:90) at java.lang.ClassLoader.loadClass(ClassLoader.java:235)TEXT)['20080102', '18:23:09,029'] - (INFO "Program finished")
@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, "Program started")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,27), :debug, "Infra-check")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,26), :info, "Checking classloaders")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,28), :warn, "Classloader not set properly" )@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,29), :error, "Could not load the org.jboss.webservice.server.Service interceptor\njava.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.webservice.server.ServiceEndpointInterceptor\n at org.jboss.mx.loading(LoadMgr3.java:212)\n at org.jboss.mx.loading(RepositoryClassLoader.java:490)\n\nat org.jboss.mx.loading(RepositoryClassLoader.java:392)\nat java.lang.ClassLoader.loadClass(ClassLoader.java:235)\nat org.jboss.util.loading.(DelegatingClassLoader.java:89)\nat org.jboss.mx.loadClass(LoaderRepositoryClassLoader.java:90)\nat java.lang.ClassLoader.loadClass(ClassLoader.java:235)")@log << LogEntry.new(Time.mktime(2008,01,02,18,23,06,30), :info, "Program finished")
#eof