Intro Proposal Results Conclusions Domain-Specific Language for Generating Administrative Process Applications Antonio García-Domínguez, Ismael Jerez-Ibáñez and Inmaculada Medina-Bulo July 8th, 2015 A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 1 / 12
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Intro Proposal Results Conclusions
Domain-Specific Language for GeneratingAdministrative Process Applications
Antonio García-Domínguez, Ismael Jerez-Ibáñez andInmaculada Medina-Bulo
July 8th, 2015
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 1 / 12
Intro Proposal Results Conclusions
Motivation
SituationUniv. of Cadiz (Spain), IT webdev+support group (5-8 people)Need to handle demand for many “small” internal appsSimilar needs: data collection and simple processes
RestrictionsVaried backgrounds: recently standardized on Python/DjangoLimited time/budget for training/consultingDevelopers are moved frequently between apps
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 2 / 12
Intro Proposal Results Conclusions
Existing approaches
Full-fledged BPM systems (e.g. Bonita)
Pros: standards-based (BPMN), general-purposeCons: complexity, dependency on engine, seemingly “minor”customizations are costly
Domain-based code generators (e.g. EMF Forms / Apache Isis)
Pros: simpler, easier to customizeCons: do not take into account the underlying process
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 3 / 12
Intro Proposal Results Conclusions
Proposed approach: process category-specific DSL
Modelling requirements1 Manage both domain and process2 Provide role-based access control per process state3 Support decision- and date-based transitions4 Support process isolation between users with same roles
Technical requirements1 Allow generator-specific annotations2 Manageable with regular editors and VCSs
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 4 / 12
Intro Proposal Results Conclusions
Example: examination process
site School;
options { . . . }
role student;role teacher;
process exam {entity Ans3 { . . . }
section personal { . . . }section test { . . . }section evaluation { . . . }
state initial {permissions student { editable personal; }transition(decision_by="student",start_date="2015/03/01−14:00:00",end_date="2015/03/07−14:00:00",max="1") part1;
}
Initial stateImplicit state while unstartedWho can start the process,when and how many times?Here, students could start theprocess once from March 1st toMarch 7th at the part1 state
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 5 / 12
Intro Proposal Results Conclusions
Example: examination process
site School;
options { . . . }
role student;role teacher;
process exam {entity Ans3 { . . . }
section personal { . . . }section test { . . . }section evaluation { . . . }
1000+ lines of Python code400+ lines of HTML templates264 lines of docs/support scripts
FeaturesGenerates models, views and controllersGenerates process-oriented UI as starting pointPartial form saving (drafts)Integrates useful Django features (admin panel, dataversioning, chained selectors, i18n...)
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 8 / 12
Intro Proposal Results Conclusions
Current status
AvailabilityIn-house with IT staff and local contractorsCurrently used to prototype four internal apps:
Budget plan trackingDegree improvement plan trackingJob postings managementStrategic plan definition/tracking
MaturityMetamodel mostly stabilized, but not frozen yetEditor is being refined with OCL constraintsGenerator verified through automated functional testingCollaborating with users on defining “protected regions”
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 9 / 12
Intro Proposal Results Conclusions
Conclusions
ProposalSmall IT group working on repetitive web appsGeneral purpose BPM engines too complex, form-basedframeworks do not consider the processesProposed middle ground: a process category-specific DSL
Results obtainedDSL (parser + editor) implemented through XtextCode generation with Epsilon targeting DjangoBeing used currently to develop four in-house apps
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 10 / 12
Intro Proposal Results Conclusions
Future work
Improvements on DSL
State preconditions/postconditionsNested groups
Improvements on toolingExtend current Xtend validation with OCLCreate more generators (Symfony2, BPMN?)Graphical visualizations of the processCreate graphical editor (backed by DSL instead of XMI)
ValidationRefinements based on user feedbackPlanned open source release in summer/fall 2015Future studies on productivity/usability
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 11 / 12
Intro Proposal Results Conclusions
End of the presentation
Thank you for your attention
@antoniogado, @antoniogado_es
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Abstract syntax — Application
Application Element
Options Role
name : EString
Site
name : EString
Option
name : EStringvalues : EString
Entity
name : EString
Process
name : EString
[0..*] elements
[0..*] elements
[0..*] properties
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Abstract syntax — Process
State
name : EString
Relation
relname : EString
ProcessElementProcess
name : EString
Entity
name : EString
Section
name : EString
[0..*] elements
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Abstract syntax — Sections/Entities
Field
type : EString
Group
SectionElement
name : EString
Relation
relname : EString
EntityElement
Option
name : EString
values : EString
Section
name : EString
Entity
name : EString
[0..*] elements
[0..*] options[0..*] reloptions[0..*] options
[0..*] elements [0..*] elements
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Abstract syntax — States
Permission
type : EString
PermissionAllPermissionWithTarget
State
name : EString
StateElement Transition
Points to section,group or field.
RolePermissionsDef RequiredTransition
[0..*] elements
[0..1] name
[0..*] permissions [0..*] transitions
[0..1] from
[0..1] to
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Abstract syntax — Relations
Relation
relname : EString
RelationReferenceTarget
RelationTarget
RelTailRef
RelTailRef2
ProcessOrEntity
SectionOrEntity
Group
LiteralClass
value : EString
[0..*] targets
[0..1] tail
[0..1] tail
[0..1] target
[0..1] element
[0..1] element
A. García-Domínguez et al. Domain-Specific Language for Generating Administrative Process Applications 12 / 12
Example: examination process
site School;
options { . . . }
role student;role teacher;
process exam {entity Ans3 { . . . }
section personal { . . . }section test { . . . }section evaluation { . . . }