Domain-specific transformation of the REA enterprise ontology

Similar documents
Using DSM to Generate Database Schema and Data Management

SOME ONTOLOGICAL ISSUES OF THE REA FRAMEWORK IN RELATION TO ENTERPRISE BUSINESS PROCESS

Using metadata for automated testing of complex object structure

Enterprise Planning Model Using REA Ontology

Could a Resource be Simultaneously a Schedule according to the REA Ontology?

Generic and Domain Specific Ontology Collaboration Analysis

Paired Transactions and Their Models

Domain-Driven Development with Ontologies and Aspects

Automated REA (AREA): a software toolset for a machinereadable resource-event-agent (REA) ontology specification

Reusable Object-Oriented Model

* Corresponding Author

Model refactoring within a Sequencer TOMAŽ KOS 1, TOMAŽ KOSAR 2, JURE KNEZ 1, MARJAN MERNIK 2

The Extended Money Object Pattern

Conceptual modeling using domain ontologies: Improving the domain-specific quality of conceptual schemas

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

Development of a formal REA-ontology Representation

An Ontological Analysis of Metamodeling Languages

Full file at Chapter 2: Foundation Concepts

Automatized Generating of GUIs for Domain-Specific Languages

UML PROFILING AND DSL

Darrell Bethea June 6, 2011

SourcererCC -- Scaling Code Clone Detection to Big-Code

Transforming Enterprise Ontologies into SBVR formalizations

Proposed Revisions to ebxml Technical Architecture Specification v ebxml Business Process Project Team

Finite State Automata as a Data Storage

Java Primer 1: Types, Classes and Operators

Metamodeling for Business Model Design

10 Implinks and Endpoints

Proposed Revisions to ebxml Technical. Architecture Specification v1.04

A Proposed Method in Agile Practices to Create Requirements Documentation and Test Cases

Function names can be specified with winidea syntax for qualified names, if multiple download files and file static functions are tested.

Decaf Language Reference Manual

LESSON 1. A C program is constructed as a sequence of characters. Among the characters that can be used in a program are:

Product Documentation SAP Business ByDesign August Analytics

C++ Basic Elements of COMPUTER PROGRAMMING. Special symbols include: Word symbols. Objectives. Programming. Symbols. Symbols.

PRISM - FHF The Fred Hollows Foundation

First Steps Towards Conceptual Schema Testing

Model Driven Architecture with Java

Use of MS DSL Tools in the development process of a Domain-Specific Language

CONTRACTUAL SPECIFICATION OF COMPONENT USING VIRTUAL INTERFACE

JAVA: A Primer. By: Amrita Rajagopal

Cobra Navigation Release 2011

An Analysis of Approaches to XML Schema Inference

Code Structure Visualization

Evaluating the Use of Domain-Specific Modeling in Practice

Informatica 3 Syntax and Semantics

Chapter 6 Introduction to Defining Classes

Web of Data: P2P Business domain translation of problem spaces. Semantic Business Integration (WIP draft)

Enhanced OpenID Protocol in Identity Management

CHAPTER 7 OBJECTS AND CLASSES

Objectives. Chapter 2: Basic Elements of C++ Introduction. Objectives (cont d.) A C++ Program (cont d.) A C++ Program

Chapter 2: Basic Elements of C++

1 Lexical Considerations

On the correctness of template metaprograms

Chapter 2: Basic Elements of C++ Objectives. Objectives (cont d.) A C++ Program. Introduction

UML Specification and Correction of Object-Oriented Anti-patterns

Objects and Classes Lecture 2

d-file Language Reference Manual

Error Recovery during Top-Down Parsing: Acceptable-sets derived from continuation

REVIEW AND OUTLOOKS OF THE MEANS FOR VISUALIZATION OF SYNTAX SEMANTICS AND SOURCE CODE. PROCEDURAL AND OBJECT ORIENTED PARADIGM DIFFERENCES

An Approach for Quality Control Management in Object Oriented Projects Development

Classes. Logical method to organise data and functions in a same structure. Also known as abstract data type (ADT).

Business Object Type Library Draft Technical Specification

COP 3330 Final Exam Review

What are the characteristics of Object Oriented programming language?

Data Management Lecture Outline 2 Part 2. Instructor: Trevor Nadeau

Static Safety Analysis of UML Action Semantics for Critical Systems Development

CLASSES AND OBJECTS IN JAVA

Perspectives on User Story Based Visual Transformations

Introduction to modeling. ER modelling

Guiding System Modelers in Multi View Environments: A Domain Engineering Approach

XML APIs Testing Using Advance Data Driven Techniques (ADDT) Shakil Ahmad August 15, 2003

Java Model of Basic Algebraic Structures

A Comparison of Ecore and GOPPRR through an Information System Meta Modeling Approach

JavaScript CS 4640 Programming Languages for Web Applications

Refinement and Formalization of Semi-Formal Use Case Descriptions

Graph Representation of Declarative Languages as a Variant of Future Formal Specification Language

GNU ccscript Scripting Guide IV

Extended abstract. The Pivot: A brief overview

Modules: Contexts of Template Instantiations and Name Lookup Gabriel Dos Reis Microsoft

Integrating Domain Specific Modeling into the Production Method of a Software Product Line

jcel: A Modular Rule-based Reasoner

Lab Exercise 6: Abstract Classes and Interfaces CS 2334

Java+- Language Reference Manual

C++ Programming: From Problem Analysis to Program Design, Third Edition

12/05/2017. Geneva ServiceNow Custom Application Development

Full file at

Properties of Regular Expressions and Finite Automata

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business.

Analyze of SIP Messages and Proposal of SIP Routing

Working Draft, Extensions to C++ for Modules

Tokens, Expressions and Control Structures

Transformation Rules with MetaEdit+

TRAVEL AND EXPENSE CENTER REPORTS USER GUIDE

DSM model-to-text generation: from MetaDepth to Android with EGL

Announcements for the Class

Customer Relationship Management Software

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures

Design patterns of database models as storage systems for experimental information in solving research problems

IPCoreL. Phillip Duane Douglas, Jr. 11/3/2010

Transcription:

Domain-specific transformation of the REA enterprise ontology Zdenek Melis University of Ostrava Czech Republic e-mail: Zdenek.Melis@Osu.cz Jaroslav Zacek University of Ostrava Czech Republic e-mail: Jaroslav.Zacek@Osu.cz Frantisek Hunka University of Ostrava Czech Republic e-mail: Frantisek.Hunka@Osu.cz Abstract The paper deals with the general description of the methodology of the transformation of basic concepts of the REA enterprise ontology (Resource, Event, Agent) from the initial visual modeling interface to model source codes. The paper describes the structure of the script of the domainspecific language (DSL) and its subsequent transformation into the executable source code using abstract classes for defining the structure of the template code. The aim is the creation of the basic structure of the concept of templates and layout the code generated from the created model. The model is due to excessive complexity limited to the use of three basic concepts of REA enterprise ontology. Keywords- REA ontology; DSM; DSL; transformation I. INTRODUCTION Due to the increasing complexity of information systems, demands for the control clarity and the simplicity are increasing. Technologies that use a visual environment come to the fore. One of the leading technologies based on a visual programming is a domain-specific modeling (DSM) [1]. It focuses on one particular domain, which provides the syntax and the semantic of the visual language and the ability to transform created models into the executable source code [1]. Business process modeling is one of complex problems that use the visual modeling technology. With regard to the structure of the DSM and code generation possibilities, the most appropriate technology of the description of business processes seems to be the REA ontology [2]. The objectoriented structure of the REA ontology allows transformation of models into other structures, such as source code or database schema [8, 9, 10]. II. DOMAIN-SPECIFIC MODELING Domain-specific modeling is a software engineering methodology for software development [1]. The primary focus of DSM is automated development of applications in a specific domain based on principles of visual programming. Unlike traditional modeling principles that have a universal focus, DSM is based on the entirely specific modeled domain. The DSM architecture is three layered, although individual layers overlay to each other. The highest and for the user the most visible layer is the language. The narrow focus on a specific domain allows language to correspond by its whole structure to domain terms. Syntactic aspects of the language are not limited to textual form, but they can take any visual form representing concepts of particular domain. Unlike generally focused traditional principles, semantic aspects of the language are contained. The second layer is the generator, which transforms created model into language of the target platform. The last layer is the domain framework. It creates a supportive environment for the generator, which includes many features, such as defining the interface for the generator, integration of the generated code into the system, removing duplicate parts, and many others. The main advantage of DSM is the automated transformation without mapping that is a frequent source of errors. Using of the domain language brings simplicity and easy manipulation with tool even for non-technical users who can intuitively use the tool through the knowledge of the problem domain. The toughest stage in the development process is creating of the modeling tool. Once the tool is developed, using this tool for creating software is very simple and fast. It can increase development productivity up to ten times [5, 6]. III. THE REA ONTOLOGY The REA enterprise ontology is the concept for designing and model creation of enterprise infrastructures. It is based on resource ownership and its exchange. The aim of most businesses is the profit generation and therefore they must ensure the effectiveness, the efficiency and the adaptability of their business processes and it cannot be done without their modeling and subsequent analysis [4]. There are many of business processes modeling tools, but due to inadequate level of abstraction and the use of general concepts they are not usable enough for the business process modeling. Rather than general modeling techniques companies use expensive software created directly to the specific requirements of a particular enterprise. REA ontology does not use general concepts but specific. They increase the amount of represented data, while maintaining the simplicity of the model. The REA ontology model offers 4 levels of abstraction [2, 7]. The highest level is Value System Level, which represents view of the flow of

resources between the company and its business partners. The second level is Value Chain Level describing links between business processes within a company. The third level, REA model level, describes a specific business process and represents the change in the value of resources. The various concepts of this level can be divided into two groups the operational level and the policy level. The operational level includes the basic concepts describing the specific facts and events that have already happened. Here are included concepts forming the name of this ontology - economic resource, event and agent. The policy level is an extension of the operational level by concepts specifying rules or allowing planning. The lowest level of an abstraction is the Task level, which describes the model instance level, making it an implementation-dependent. This paper deals only with the transformation of the operational level of the REA model level. It has three basic concepts: economic resource, event and agent. The resource represents an economic material that the business wants to plan, manage and monitor. It can include products, money, services or for example workmen. The economic agent is a person, group of people or the whole company that has control over resources. The economic event describes incremental or decrement change of resource. From the model perspective the economic event is key for preserving information, because it determine who, when, why and how the resource was changed [3]. One of reasons for choosing the REA ontology is objectoriented structure support that is necessary for successful transformation. The REA ontology model also includes internal rules for verifying the consistency of the model, ensuring correctness of created links. At the same time models are simple and understandable for ordinary users who will work with it, but sufficiently precise for its automation [2]. IV. MODEL TRANSFORMATION The transformation itself consists of several steps. At the beginning the user creates a model of a business process in the visual interface. This interface contains methods for ensuring the basic model validation by preventing incorrect links creation alternatively prevent execution of the second phase - generation. During the second phase the DSL script is generated from a visual model, containing basic elements of the structure of the model and on this basis the source code is generated. A. Visual interface The user creates a business process models in the visual environment that provides the basic user interface and performs the validation and the partial verification of the model. It provides basic semantic correctness of the model and prevents the generation of incomplete structures. The visual interface contains the common label of an entity type and its name and basic data attributes defining its properties. Figure 1 shows the visual form of the model with attributes. For simplicity and clarity only basic entities representing resources, events and agents are used. Figure 1: Visual representation of the model The header of each element contains the name and the type of entity. Under the header there are attributes with a predefined structure specified by the type of entity. If necessary the user can expand, or completely change the structure by adding new attributes or changing existing ones. The entity Car can serve as an example. In addition to basic attributes Name and Amount the entity is expand by SN attribute representing a specific serial number of the car and Value that represents the value that the resource has for the company (for example total production costs). The value on the link between the resource and the event indicates the amount of resources that is changed within the event. B. DSL script Once the model is completed and validation criteria are met, a domain-specific language (DSL) script constituting the regulation for the generator is created. The script is basically the export of the created model into XML format with the omission of data related to the visual interface of the model (such as the placement of elements, their size, color...). The following code fragment represents the DSL script showing the transfer of the resource entity from the model shown at Figure 1: <resource title="car"> <id type="int">1</id> <name type="string">audi A4</name> <sn type="string">35a76c38</sn> <amount type="int">1</amount> <value type="int" currency="usd"> 7200</value> </resource> <resource title="money"> <id type="int">2</id> <name type="string">money</name>

<amount type="int">50000</amount> <currency type="string"> USD</currency> </resource> The code contains new items added by user - value that represents the value of the economic resource and currency for defining the exchange of funds handled by business. Individual links are merged with the appropriate entities. An example may be the Stackflow link (link between the Resource and the Event) containing information on the amount of increase / decrease of resources within a single event. This attribute is converted into an Event entity. As mentioned before, the main carrier of information is an Event entity, which has a significant role in obtaining data from the model. For this reason, most of links of this model moves into this entity. Each entity has a unique ID, which is used for the unique identification of the element and for replacing individual links by creating reference to that ID. The following code fragment shows one of event entities: <event title="sale"> <id type="int">1</id> <name type="string">sale</name> <eventtype type="eventtype">decrement</eventtype> <agentreceiveid type="int">8</agentreceiveid> <agentprovideid type="int">2</agentprovideid> <resourceid type="int">1</resourceid> <date type="string">8.12.2002</date> <amount type="int">1</amount> </event> EventType attribute is determined by the type of link provide/receive, if the event is from the business point of view incremental or decrement and according to these links agents are determined too. Exchange duality saves all references to events connected with duality. <exchangeduality> <id type="int">1</id> <eventid type="int">1</eventid> <eventid type="int">2</eventid> </exchangeduality> C. Source code generator The last phase of the transformation itself is generating the source code from the created DSL script. Creating a complete general generator would be inefficient and implementationaly difficult due to the unchanging structure of REA ontology elements. Fixed domain structure ensures durability and stability of domain terms, which allows predefining the general structure of basic elements. Due to their limited number it is possible to predefine a common part of the code that is same in all cases of the use of the entity as a template. In case of the above model, which is restricted for using of only three basic entities, two types of templates are used - an abstract class and a class template. An abstract class contains the basic code structure, layout of methods and predefined basic attributes that the given entity must contain. In the case of transformation of the model restricted to using only three entities the same number of abstract classes are fully enough. When extending the model by other semantic abstractions, the number of abstract classes is not linear to the number of used entities because some entities may have more abstract classes based on specific uses of that entity in the model. Basic abstract classes are therefore AbstractAgent, AbstractEvent and AbstractResource. The abstract class defining the agent entity contains the basic attributes id, name and company and their access methods, as shown in Figure 2. AbstractAgent - company: String - id: int - name: String + getcompany() : String + getid() : int + getname() : String + setcompany(string) : void + setid(int) : void + setname(string) : void + tostring() : String Figure 2: Abstract class for the agent entity These attributes are common to all agents and can be individually extended by additional parameters specifying a particular agent. Using default parameters is not mandatory, but it is recommended. The creator of the model can ignore these parameters and creates new one. The only restriction is that variable names defined in the parent class cannot be used again with different data type. The abstract class for a resource entity is defined in a similar way (Figure 3). Amount attribute indicates the amount of resources from the business perspective. The other attributes (id and name) are the same as attributes in AbstractAgent class.

AbstractResource - amount: int - id: int - name: String + getamount() : int + getid() : int + getname() : String + setamount(int) : void + setid(int) : void + setname(string) : void + tostring() : String Figure 3: Abstract class for the resource entity The last abstract class is AbstractEvent that creates a draft for the event entity (see Figure 4). Unlike the other two abstract classes it contains the most methods because the event is carrier of basic properties of the model. Attributes agentprovideid, agentreceiveid and resourceid store links with individual agents and a resource. AbstractEvent - agentprovideid: int - agentreciveid: int - amount: int - date: java.util.calendar - eventtype: EventType - id: int - name: String - resourceid: int + getagentprovideid() : int + getagentreciveid() : int + getamount() : int + getdate() : String + geteventtype() : EventType + getid() : int + getname() : String + getresourceid() : int + setagentprovideid(int) : void + setagentreciveid(int) : void + setamount(int) : void + setdate(string) : void + seteventtype(eventtype) : void + setid(int) : void + setname(string) : void + setresourceid(int) : void + tostring() : String Figure 4: Abstract class for the event entity In addition to basic attributes such as id and name the attribute amount also figures here. It indicates the amount of resources that is changed within the event. Another necessary attribute is date, recording the date of the past event. Calendar class is intended for its preservation, but the output of the visual interface returns the date as a string and therefore it is necessary to convert the date inside access methods. The last parameter is eventtype, that specifies the type of an event, whether it is from the business perspective incremental or decrement. It is determined by a constant of enumerator EventType, which is part of this class. Abstract classes are used to define basic parameters for the generated class. They are generated using class templates. They operate on a simple principle: instead of generating the whole structure of the code, such as headers of classes, methods, etc., the appropriate template that contains all of these structures will apply and on the basis of the script missing data will be add. Part of data can be added by just replacing non-terminal symbol for the specific name from the script, other data provides a simple automaton according to the specified grammar. Non-terminal symbols are written in a template as non-terminal name between two percent signs. The following code shows a template for a resource entity: public class %classname% extends AbstractResource{ %attributesdeclaration% /* * Default constructor public %classname%(int id, String name, int amount){ setid(id); setname(name); setamount(amount) /* * Empty constructor public %classname%(){ %fullconstructor% %attributesgettersetter% public String tostring(){ return super.tostring()%tostring%; Generator processes the template by its division by the % character to array strings - tokens. Each token is compared with the list of keywords and if the comparison did not find any results, the token is written to the file. If the token is recognized as a keyword, the output of automaton corresponding to that keyword is written to the file. In above template there are many non-terminals. The first of them is an attribute %classname%, which is

overwritten by the value specified in the script as a title. Any spaces or illegal characters are removed. The attribute %attributesdeclaration% is responsible for the declaration of new variables. This must be performed by automaton using the following grammar: %attributesdeclaration%: %attributesdeclaration% -> private %attribdatatype% %attribname%;%n% %attributesdeclaration% %attributesdeclaration% -> %e% The grammar has 2 rules. Until there are other undefined variables, the first rule is used, but once all new variables from the script are processed, the second rule is used. Known data types defined at an abstract class are skipped by the generator at this stage. Non-terminal %attribdatatype% is replaced by the appropriate data type corresponding to the attribute type in the DSL script in the section behind the element name. The element name itself is used to replace %attribname% attribute. Non-terminal %n% is used by automaton as the command new line and %e% is empty non-terminal, in this case the automaton ends and the generator continues processing other parameters. Another non-terminal symbol in the template is %fullconstructor%, that is used to generate the constructor containing all used variables. Its structure is defined by following grammar: %fullconstructor%: %fullconstructor% -> public %name%(int id, String name, String company%attributes%){ this(id, name, company); %setattributes% %fullconstructor% -> %e% %attributes%: %attributes% ->,%attribdatatype% %attribname% %attributes% %attributes% -> %e% %setattributes%: %setattributes% -> this.set%attribname%(%attribname%); %n%%setattributes% %setattributes% -> %e% The processing of this non-terminal occurs only when the DSL script contains new attributes, otherwise the output would be identical to the default constructor. That is why this structure is implemented by using the non-terminal instead of fixed placement in the template. The first part of the template generates the general structure of the constructor with fixed set of variables of the abstract class. In the header of the method there is non-terminal %attributes% which generates a list of all newly added variables including their data types separated by commas. The body of method starts with calling the default constructor. Then %setattributes% non-terminal is used for generation of the code to ensure the assignment of method s input values to particular variables. The last non-terminal in the template is %tostring%, which is used for completing tostring() method. This nonterminal is performed only if the element contains new attributes. %tostring%: %tostring% -> +"\n%attribname%: "+get%attribname%() %tostring% -> %e% After the template processing is complete, the output is the class containing the complete source code corresponding to the particular element in the visual interface: public class Money extends AbstractResource{ private String currency; /** * Default constructor public Money(int id, String name, int amount){ setid(id); setname(name); setamount(amount); /** * Empty constructor public Money(){ public Money(int id, String name, int amount, String currency){ this(id, name, amount); setcurrency(currency); public void setcurrency(string currency){this.currency = currency; public String getcurrency(){return this.currency; public String tostring(){

return super.tostring()+"\ncurrency: "+getcurrency(); In a similar way templates for agents and events are created. In addition to these classes the new class is generated, which creates instances of created classes and fills them with data. By extending this class there is a space for the instance level of visual modeling or to extension the model by the simulation ability. [6] Metacase, Domain-specific modeling with Metaedit+: 10x faster than UML, White paper [7] Ch. L. Dunn, J. O. Cherrington, A. S. Hollander, Enterprise Information Systems A Pattern-Based Approach, 3 edition, McGraw-Hill/Irwin, ISBN-13: 978-0072404296 [8] J. Ševčík, Z. Meliš, J. Žáček, F. Huňka, Enterprise Information System Design Using REA Enterprise Model, Strategic Management and its Support by Information Systems, VŠB - TU Ostrava 2011, ISBN 978-80-248-2444-4 [9] Z. Meliš, J. Žáček, J. Ševčík, F. Huňka, Transformation of selected policy level REA concepts into a relation database, VŠB-TUO, 2011, ISBN 978-80-248-2487-1 [10] T. Halpin, Information Modeling and Relational Databases: From Conceptual Analysis to Logical Design, 2001, Academic Press, ISBN 1-55860-672-6 V. DISCUSSION ABOUT USING OF ABSTRACT CLASSES Using abstract classes can greatly simplify the process of the source code generating, because it is not necessary to generate repeatedly general and often used structures. The disadvantage of this solution is the loss of generality of generated models. Globally, it is not possible to determine the exact structure of abstract classes of the REA ontology, because it depends on the specific modeled business process. It is only possible to determine the estimated parameters, but not mandatory parameters. For example, the agent has estimated parameter Name. An abstract class defines it as a String, but the model creator may require an instance of some object. Although it is possible to add a new attribute, it is necessary to choose a different label of the attribute. The question is, when it is appropriate to use an abstract class? If the usage of complex data structures in attributes is not expected, the application of abstract classes of will significantly facilitate the creation of the generator. On the other hand, if generality of models and their greater modeling expressiveness is required, then the application of abstract classes is not recommended. ACKNOWLEDGMENT The paper is supported by the grant reference no. 6141 provide by IGA Faculty of Science University of Ostrava. REFERENCES [1] M. Fowler, Domain-specific Languages, Addison Wesley Longman, Inc., 2010, ISBN 0-321-71294-3 [2] P. Hrubý, M. Hučka, F. Huňka, J. Kašík, D. Vymětal, Víceúrovňové modelování podnikových procesů (Systém REA), 2010, VŠB-TU Ostrava, ISBN 978-80-248-2334-8 [3] P. Hruby, Model-Driven Design Using Business Patterns, Springer 2006, ISBN-13 978-3-540-30154-7 [4] G. L. Geerts, W. E. Mccarthy, The ontological foundation of REA enterprise information systems, American Accounting Association Conference 1-34 (2000) [5] S. Kelly, J. Tolvanen, Domain-Specific Modeling Enabling Full Code Generation, John Wiley & Sons, Inc., 2008, ISBN 978-0-470-03666-2