This document discusses an approach called EIS Patterns for developing enterprise information systems in a more flexible way. EIS Patterns uses Python and Django along with techniques like test-driven development, decorators, and natural language processing to implement business processes. Decorators allow behaviors to be mixed and matched at runtime. Contracts between nodes and decorators are defined using a domain-specific language called Should-dsl and tested automatically. The goal is to have a transparent and configurable workflow engine that can be used with existing platforms and databases.
Report
Share
Report
Share
1 of 11
Download to read offline
More Related Content
Towards More Flexible Enterprise Information Systems
1. Rogerio Atem de Carvalho, Instituto
Federal Fluminense
Bjorn Johansson, Lund University
Towards More Flexible EIS
2. Introduction
●
Flexibility: capacity of being adaptable in a cost
and effort effective way
●
Flexibility through relational databases based
configuration is limited
●
EIS Patterns: a testbed for testing new
techniques for developing EIS
●
Based on ideas brought from 10 years of
participation in the open source ERP5 project
●
Focused on the software development aspects
3. Environment
●
Python, high level, dynamic programming
language
●
Automated testing:
●
Test Driven Development (TDD)
●
Behavior Driven Development (BDD)
●
On the way: Business Language Driven
Development (BLDD)
●
Django Web development framework
5. Implementing Processes
●
Business processes implementation: “a Process
coordinates Nodes to perform Operations on
Work Items”
●
“a Movement encapsulates an Operation”:
●
An operation represents a production task
●
When trigged by an event in a Process, it
defers the actual execution to a pre-
configured node's method
●
This execution is logged by a movement
object, which stores all parameters, date and
time, and results of this execution
6. Implementing Processes
●
Therefore, an operation is an abstract
concept which can be configured to defer
execution to different methods, from
different objects, in accordance to the intents
of a specific business process instance
●
Keeps business processes abstraction, while
customization can be obtained by
configuration
7. Decorators
●
Subclassing avoidance:
●
Subclassing adds behavior to all instances of
the original class, decoration can provide new
behavior, at runtime, for individual objects:
“pay-as-you-go” approach to adding
responsibilities
●
Decorators allows mix-and-matching of
responsibilities
●
Decorators facilitates system configuration
●
Problem: typically, it is necessary to deal with
lots of small objects
8. Decorators and Contracts
●
In order to decorate a Node, it is necesssary to
check if this node is compatible with the
decorator
●
Should-dsl, a language created for writing more
readable tests is used to check contracts
●
Contracts are tested automatically, and can also
be queried
●
An example rule for given someone manager
responsibilities:
candidate_node |should|
be_decorated_by(EmployeeDecorator)
9. Natural Language Processing
●
Used to check requirements written in text
●
Significant terms are used to parse decorators'
documentation
●
Operations are special methods that can be
cathegorized, for instance as, financial,
logistics, manufacturing...
●
After finding candidate decorators, rules written
in should-dsl are ran to check the compatibility
between them and candidate nodes
10. Inoculable Workflow Engine
●
WfE usally are of two types:
●
App development platforms: configurable,
but you must use the platform
●
Software libraries: you can use your
platform, but you need to program and use
the library's objects
●
xFluidity:
●
Inoculable and expellable: transparent
●
Configurable – even at runtime
11. Conclusions
●
EIS Patterns is a testbed for:
●
Automated testing techniques
●
Dynamic programming languages
●
Use of Domain Specific Languages (DSL) for
testing, designing, and checking contracts
●
Use of decorators for extenting and
customizing behavior
●
Use of NLP for requirements analysis
●
Use of a transparent workflow engine
●
Works with relational databases