Source: https://patents.google.com/patent/US20090006440A1/en
Timestamp: 2019-02-20 16:41:58
Document Index: 514936076

Matched Legal Cases: ['art 305', 'art 305', 'art 305', 'art 305', 'art 305', 'art 305', 'art 305']

US20090006440A1 - Object Model Based Mapping - Google Patents
Object Model Based Mapping Download PDF
US20090006440A1
US20090006440A1 US11/768,628 US76862807A US2009006440A1 US 20090006440 A1 US20090006440 A1 US 20090006440A1 US 76862807 A US76862807 A US 76862807A US 2009006440 A1 US2009006440 A1 US 2009006440A1
US11/768,628
US8566780B2 (en
Andrey Tolskyakov
Mohammed Fadel Shatnawi
Justin Jiajun Hua
2007-06-26 Application filed by Microsoft Corp filed Critical Microsoft Corp
2007-06-26 Priority to US11/768,628 priority Critical patent/US8566780B2/en
2007-12-18 Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HERRING, RUSSELL ALLEN, JR., HUA, JUSTIN JIAJUN, SHATNAWI, MOHAMMED FADEL, TOLSTYAKOV, ANDREY
2009-01-01 Publication of US20090006440A1 publication Critical patent/US20090006440A1/en
2013-10-22 Publication of US8566780B2 publication Critical patent/US8566780B2/en
Object model based mapping may be provided. First, backend data may be received defining data constructs in a backend system. Then entity data may be received defining data constructs in an entity model. User selectable elements may then be received defining a process associating the backend data with the entity data. Next, code may be produced, based on the received user selectable elements, configured to implement the process.
Related U.S. patent application Ser. No. ______, filed on even date herewith in the name of Andrey Tolstyakov and entitled “Providing Mapping Fault Processing,” assigned to the assignee of the present application, is hereby incorporated by reference.
An independent software vendor (ISV) is a business term for companies specializing in making or selling specialized software products, usually for niche markets comprising, for example, real estate brokers, scheduling for healthcare personnel, barcode scanning, and stock maintenance. Specialized software products generally offer higher productivity to organizations than more generalized software such as basic spreadsheet or database packages.
Object model based mapping may be provided. First backend data may be received defining data constructs in a backend system. Then entity data may be received defining data constructs in an entity model. User selectable elements may then be received defining a process associating the backend data with the entity data. Next, code may be produced, based on the received user selectable elements, configured to implement the process.
FIG. 2 is a flow chart of a method for providing object model based mapping;
Object Model Based Mapping May Be Provided.
Conceptual entity programming is an emerging trend that ISVs are trying to use to overcome the problems of specific implementation and data access of databases and database technologies like customer relationship management (CRM). CRM is a term that covers concepts used by companies to manage their relationships with customers, including capture, storage, and analysis of customer information. Consistent with embodiments of the invention, a programming model that enables mapping a conceptual (entity) model to a backend may be provided. The backend may be, for example, a conceptual model itself, a relational database, or a set of application program interfaces (APIs). There may be no restrictions on the nature of the backend. Embodiments of the invention may have the following behavior to enable mapping between an entity model and a backend: i) ability to define both endpoints (e.g. entity model and backend); ii) ability to understand the properties, predicates, and behaviors of conceptual model, and translate those into pertinent functionality to be performed on the backend; iii) ability to customize a solutions provided for a specific design/implementation of a conceptual model and a specific type/version of the backend; iv) ability to customize at both a design time and/or runtime of a solution; and v) ability to package the solutions, ship, or deploy them independent of the backends.
For ISVs that define such a conceptual abstraction known as an entity model, the ability to map data between their abstract constructs known as entities (e.g. entity classes, data logical classes, etc.) and data constructs of backend systems their going against is desired. Such a mapping may include: i) data type transformation (e.g. strings to guides, integers to strings, concatenation of types, any mathematical transformation on a type, etc.); ii) backend end specification (e.g. which backend to map to, such as a structured query language (SQL) server, Microsoft customer relationship management (MSCRM) server, a SAP CRM server, a Siebel CRM server, etc.); and iii) which method to access the backend (e.g. via data access layers such as ActiveX Data Objects (e.g. Ado.Net) or Web service facades to the backend).
A problem faced by ISVs is that any ISV solution may not he a viable choice for customers without the ability to customize that solution. Customization may be important because any generic solution may not be what specific customers need for their specific conceptual (i.e. entity) model and their specific backends. Customers may have a different conceptual model, may interact with a different backend, may have different mapping requirements between their conceptual model and the backend, or any possible combination of these.
To address the aforementioned problems, (e.g. the mapping problem, design time customization, and runtime customization) embodiments of the invention may include a system and method that allow for the specification of the conceptual model and the backend to interact with as a set of interfaces. FIG. 1 shows a mapping system 100 consistent with embodiments of the invention. As shown in FIG. 1, system 100 may includes a backend 105, a map 110, and an entity model 115. For example, map 110 may include specific mapping predicates that have the ability to: i) define end points for the conceptual model to go against; and ii) define mapping/transformation logic between the two ends (e.g. entity model 115 and backend 105). For example, backend 105 may comprise a legacy banking system using a structured query language (SQL) server. Entity model 115 may comprise a conceptual model corresponding to a remote personal computer configured to perform online banking for example. Map 110 may perform bi-directional data transforms between entity model 115 and backend 105 as described in greater detail below.
Moreover, embodiments of the invention may have the following features. First, embodiments of the invention may have the ability to understand the conceptual model's signatures (i.e. as a set of interfaces). In addition, embodiments of the invention may be configured to define and access backend endpoints and to schedule actions and functionality to insure correctness of the mapping. In addition, embodiments of the invention may be configured to supply workflow/runtime like behavior (e.g. scheduling, error handling, event raising, and event handling, etc.). Also, embodiments of the invention may be configured to support programmable customization of the mapping solutions.
FIG. 2 is a flow chart setting forth the general stages involved in a method 200 consistent with an embodiment of the invention for providing object model based mapping. Method 200 may be implemented using a computing device 400 as described in more detail below with respect to FIG. 4. Ways to implement the stages of method 200 will be described in greater detail below. Method 200 may begin at starting block 205 and proceed to stage 210 where computing device 400 may receive backend data defining data constructs for backend system 105. For example, the backend data may specify any information regarding backend system 105 in order for map 110 to provide object model based mapping between backend 105 and entity model 115. The backend data may specify which backend to map to, such as a structured query language (SQL) server, a Microsoft customer relationship management (MSCRM) server, a SAP CRM server, a Siebel CRM server, etc.). Furthermore, the backend data may specify which method to use to access backend system 105, for example, via data access layers such as ActiveX Data Objects (e.g. Ado.Net) or Web service facades to backend system 105.
From stage 210, where computing device 400 receives the backend data, method 200 may advance to stage 220 where computing device 400 may receive entity data defining data constructs in an entity model. For example, the entity data may specify any information regarding entity model 115 in order for map 110 to provide object model based mapping between backend 105 and entity model 115. For example, the entity data may specify the desired data or the desired data format for the input and output associated with entity model 115. Entity model 115 may comprise a customer's conceptual world.
Once computing device 400 receives the entity data in stage 220, method 200 may continue to stage 230 where computing device 400 may receive user selectable elements defining a process associating the backend data with the entity data. For example, the process may be defined by a flow chart (i.e. workflow) 305 as shown in FIG. 3. In order to define the process, computing device 400 may present a user with an interface configured to receive the user selectable elements defining the process as flow chart 305. The selectable elements may comprise activities including, for example, an activity 310. The activities in flow chart 305 may define map 110. As described in greater detail below, flow chart 305 may be translated by computing device 400 from flow chart 305's easy-readable format for human to machine code for computer execution.
In conventional systems, flowcharts and process schemes are done separately from code just as a way to organize ideas before writing the actual code. But when the task was finished in conventional systems, the scheme remained just as documentation. Also, the capacity of older conventional computers made it difficult to retain all the information of a workflow in memory, and it was difficult to translate from an easy-readable format for human to machine code in conventional systems. Software developers may find it easier writing a workflow instead of writing code. First, for developers, workflows may be easier to understand than code because workflows may provide a visual representation of the process. For example, adding an activity in flow chart 305 may be easier for a developer to do than re-writing code to include the activity. Consequently, non-programs may be able to write workflows thus producing code without having computer programming skills.
Moreover, there may be two main kinds of workflows: i) sequential; and ii) and state machine. With sequential workflows, actions may he executed in some predefined order with a beginning and an end. Examples of sequential workflows may include installations. With state machine workflows, these workflows may not have a path, but it may be represented as a set of states and transitions between states. Examples may include a web shop: you may need approval for mailing, the user could pay via credit card or with a cheque, and each user is in one state and may go to any order depending on previous questions.
After computing device 400 receives the user selectable elements in stage 230, method 200 may proceed to stage 240 where computing device 400 may produce code, based on the received user selectable elements, configured to implement the process. For example, computing device 400 may convert flow chart 305's activities (e.g. describing map 110) to machine code for execution on computing device 400. During execution, the code may perform mapping between entity model 115 and backend 105.
Workflow instances may be created and maintained by an in-process runtime engine, for example, a runtime engine 315. There can be several workflow runtime engines within an application domain, and each instance of the runtime engine can support multiple workflow instances running concurrently. When a workflow model is compiled, it can be executed inside any process including console applications, forms-based applications, Services, ASP.NET Web sites, and Web services. Because a workflow may be hosted in process, a workflow can communicate with its host application. For example, the workflow described in flow chart 305 may communicate with a host application 320. Once computing device 400 produces the code in stage 240, method 200 may then end at stage 250.
An embodiment consistent with the invention may comprise a system for providing object model based mapping. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to receive backend data defining data constructs in a backend system and to receive entity data defining data constructs in an entity model. In addition, the processing unit may be operative to receive user selectable elements defining a process associating the backend data with the entity data. Furthermore, the processing unit may be operative to produce code, based on the received user selectable elements, configured to implement the process.
Another embodiment consistent with the invention may comprise a system for providing object model based mapping. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to execute code configured to implement a process. The code may be produced based on received user selectable elements defining the process associating a backend data with an entity data. The backend data may define data constructs in a backend system and the entity data may define data constructs in an entity model.
Yet another embodiment consistent with the invention may comprise a system for providing object model based mapping. The system may comprise a memory storage and a processing unit coupled to the memory storage. The processing unit may be operative to receive backend data defining data constructs in a backend system. The backend data may be configured to define the backend system and to define how to access the backend system. In addition, the processing unit may be operative to receive entity data defining data constructs in an entity model. The entity data may define the data constructs comprising one of the following: entity classes and data logical classes. Moreover, the processing unit may he operative to receive user selectable elements defining a process associating the backend data with the entity data. The user selectable elements may define a flow chart of the process comprising at least one activity describing the process comprising one of the following: a sequential process and a state machines process. Also, the processing unit may be operative to produce code, based on the received user selectable elements, configured to implement the process.
FIG. 4 is a block diagram of a system including computing device 400. Consistent with an embodiment of the invention, the aforementioned memory storage and processing unit may be implemented in a computing device, such as computing device 400 of FIG. 4. Any suitable combination of hardware, software, or firmware may be used to implement the memory storage and processing unit. For example, the memory storage and processing unit may be implemented with computing device 400 or any of other computing devices 418 (e.g. backend 105), in combination with computing device 400. The aforementioned system, device, and processors are examples and other systems, devices, and processors may comprise the aforementioned memory storage and processing unit, consistent with embodiments of the invention. Furthermore, computing device 400 may comprise an operating environment for system 100 as described above. System 100 may operate in other environments and is not limited to computing device 400.
With reference to FIG. 4, a system consistent with an embodiment of the invention may include a computing device, such as computing device 400. In a basic configuration, computing device 400 may include at least one processing unit 402 and a system memory 404. Depending on the configuration and type of computing device, system memory 404 may comprise, but is not limited to, volatile (e.g. random access memory (RAM)), non-volatile (e.g. read-only memory (ROM)), flash memory, or any combination. System memory 404 may include operating system 405, one or more programming modules 406, and may include a program data 407. Operating system 405, for example, may be suitable for controlling computing device 400's operation. In one embodiment, programming modules 406 may include, for example, mapping application 420. Furthermore, embodiments of the invention may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any particular application or system. This basic configuration is illustrated in FIG. 4 by those components within a dashed line 408.
As stated above, a number of program modules and data files may be stored in system memory 404, including operating system 405. While executing on processing unit 402, programming modules 406 (e.g. mapping application 420) may perform processes including, for example, one or more method 200's stages as described above. The aforementioned process is an example, and processing unit 402 may perform other processes. Other programming modules that may be used in accordance with embodiments of the present invention may include electronic mail and contacts applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.
The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific computer-readable medium examples (a non-exhaustive list), the computer-readable medium may include the following: an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, and a portable compact disc read-only memory (CO-ROM). Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
1. A method for providing object model based mapping, the method comprising:
receiving backend data defining data constructs in a backend system;
receiving entity data defining data constructs in an entity model;
receiving user selectable elements defining a process associating the backend data with the entity data; and
producing code, based on the received user selectable elements, configured to implement the process.
2. The method of claim 1, wherein receiving the backend data defining data constructs in the backend system comprises receiving the backend data configured to define the backend system.
3. The method of claim 1, wherein receiving the backend data defining data constructs in the backend system comprises receiving the backend data configured to define how to access the backend system.
4. The method of claim 1, wherein receiving the backend data defining data constructs in the backend system comprises receiving the backend data defining data constructs in the backend system comprising one of the following: a conceptual model; a relational database; and a set of application program interfaces (APIs).
5. The method of claim 1, wherein receiving the entity data defining data constructs in the entity model comprises receiving the entity data defining data constructs comprising one of the following: entity classes and data logical classes.
6. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to allow data flow from the backend system to the entity model and between the entity model and the backend system.
7. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to implement customer relationship management (CRM).
8. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to map to a database on the backend system.
9. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to perform at least one data type transformation.
10. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to perform at least one data type transformation comprising at least one of the following: strings to guide; integers to strings; concatenation of types; and a mathematical transformation.
11. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining a flow chart of the process.
12. The method of claim 1, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining a flow chart of the process comprising at least one activity describing the process.
14. A system for providing object model based mapping, the system comprising:
a processing unit coupled to the memory storage, wherein the processing unit is operative to execute code configured to implement a process, the code produced based on received user selectable elements defining the process associating a backend data with an entity data, the backend data defining data constructs in a backend system and the entity data defining data constructs in an entity model.
15. A computer-readable medium which stores a set of instructions which when executed performs a method for providing object model based mapping, the method executed by the set of instructions comprising:
receiving backend data defining data constructs in a backend system, the backend data configured to define the backend system and to define how to access the backend system;
receiving entity data defining data constructs in an entity model, the entity data defining the data constructs comprising one of the following: entity classes and data logical classes;
receiving user selectable elements defining a process associating the backend data with the entity data, the user selectable elements defining a flow chart of the process comprising at least one activity describing the process comprising one of the following: a sequential process and a state machines process; and
16. The computer-readable medium of claim 15, wherein receiving the backend data defining data constructs in the backend system comprises receiving the backend data defining data constructs in the backend system comprising one of the following: a conceptual model; a relational database; and a set of application program interfaces (APIs).
17. The computer-readable medium of claim 15, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to allow data flow from the backend system to the entity model and between the entity model and the backend system.
18. The computer-readable medium of claim 15, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to map to a database on the backend system.
19. The computer-readable medium of claim 15, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to perform at least one data type transformation.
20. The computer-readable medium of claim 15, wherein receiving the user selectable elements defining the process comprises receiving the user selectable elements defining the process configured to perform at least one data type transformation comprising at least one of the following: strings to guids; integers to strings; concatenation of types; and a mathematical transformation.
US11/768,628 2007-06-26 2007-06-26 Object model based mapping Active 2031-06-29 US8566780B2 (en)
US11/768,628 US8566780B2 (en) 2007-06-26 2007-06-26 Object model based mapping
PCT/US2008/067836 WO2009002901A2 (en) 2007-06-26 2008-06-23 Object model based mapping
US20090006440A1 true US20090006440A1 (en) 2009-01-01
US8566780B2 US8566780B2 (en) 2013-10-22
ID=40161889
US11/768,628 Active 2031-06-29 US8566780B2 (en) 2007-06-26 2007-06-26 Object model based mapping
US (1) US8566780B2 (en)
WO (1) WO2009002901A2 (en)
KR101636455B1 (en) * 2015-04-21 2016-07-06 주식회사 씨와줄기 Apparatus and method for development of software using data oriented programming model
US5739739A (en) * 1995-12-01 1998-04-14 Yazaki Corporation Fuse structure
US6426416B1 (en) * 1990-09-05 2002-07-30 Millikan & Companay Anthraquinone and condensed anthraquinone colorants having sulfonamido linked poly (oxyalkylene) moieties and their preparation
US5940587A (en) 1997-12-12 1999-08-17 Intel Corporation System and method for trap address mapping for fault isolation
JP2004339993A (en) * 2003-05-14 2004-12-02 Toyota Motor Corp Exhaust emission control system of internal combustion engine
US7669205B2 (en) 2005-07-01 2010-02-23 Microsoft Corporation Using messages to extend CRM functionality
2007-06-26 US US11/768,628 patent/US8566780B2/en active Active
2008-06-23 WO PCT/US2008/067836 patent/WO2009002901A2/en active Application Filing
WO2009002901A2 (en) 2008-12-31
US8566780B2 (en) 2013-10-22
WO2009002901A3 (en) 2009-02-26
Penny 2003 Software maintenance: concepts and practice
Grover et al. 1997 Empirical evidence on Swanson's tri-core model of information systems innovation
Schmid et al. 2011 A comparison of decision modeling approaches in product lines
Gerede et al. 2007 Static analysis of business artifact-centric operational models
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TOLSTYAKOV, ANDREY;SHATNAWI, MOHAMMED FADEL;HERRING, RUSSELL ALLEN, JR.;AND OTHERS;REEL/FRAME:020269/0979