US6769095B1 - Hierarchically structured control information editor - Google Patents

Hierarchically structured control information editor Download PDF

Info

Publication number
US6769095B1
US6769095B1 US09/721,902 US72190200A US6769095B1 US 6769095 B1 US6769095 B1 US 6769095B1 US 72190200 A US72190200 A US 72190200A US 6769095 B1 US6769095 B1 US 6769095B1
Authority
US
United States
Prior art keywords
context
data
hierarchically structured
specifying
parametric
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime, expires
Application number
US09/721,902
Inventor
Michel Brassard
Boris Shingarov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Axure Software Solutions Inc
Original Assignee
Codagen Technologies Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/CA2000/000841 external-priority patent/WO2001008002A2/en
Application filed by Codagen Technologies Corp filed Critical Codagen Technologies Corp
Priority to US09/721,902 priority Critical patent/US6769095B1/en
Assigned to CODAGEN TECHNOLOGIES CORP. reassignment CODAGEN TECHNOLOGIES CORP. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SHINGAROV, BORIS, BRASSARD, MICHEL
Application granted granted Critical
Publication of US6769095B1 publication Critical patent/US6769095B1/en
Assigned to MANYETA INFORMATIQUE INC. reassignment MANYETA INFORMATIQUE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GTI V INC.
Assigned to GTI V INC. reassignment GTI V INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CODAGEN TECHNOLOGIES CORP.
Assigned to Axure Software Solutions, Inc. reassignment Axure Software Solutions, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MANYETA INFORMATIQUE INC.
Assigned to IRISE reassignment IRISE NOTICE OF COVENANT NOT TO SUE Assignors: Axure Software Solutions, Inc.
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Definitions

  • the present invention is directed toward a system and method for editing source code templates in a target language utilizing a graphical user interface. More particularly, the present invention is directed to a system and method in which a programmer parameterizes target source code with contextual meta-data provided by the application domain. He determines the repetitive and nesting structures of the code which is visually clear, easy to maintain and fully consistent.
  • object-oriented techniques help model the real world more closely than conventional techniques and it is mostly done using modeling tools. While building a complex system, software programmers and clients can easily establish their common vocabulary, which helps them refine system requirements effectively. Object-oriented techniques also help them build a system that is easily extensible, especially when frameworks are used.
  • Modeling tools are used by programmers or analysts to depict the business purpose of an application in a logical way that is abstracted from the “physical implementation” of the specific programming language, operating system and the hardware that the application runs on.
  • a kind of template is a block of target source code annotated where the change is needed, saved in a common location and reused by a programmer with some manual interventions. The programmer who created that block of target source code or another programmer can then re-use these lines by copying and pasting the appropriate lines into the code he is working on and making the appropriate changes for that particular usage.
  • This method is error-prone and time-requiring since, in addition to copying the right lines of codes, sometimes repeatedly, the programmer has to replace all appropriate components' names by their appropriate equivalents. This is called coding with annotated source code template.
  • Some generation software tools allow the programmer to use textual generation templates, which consist of parameterized lines of source code, to create new operations or components. These textual generation templates enable programmers to specify the selected components for which they want to generate code by using filter variables, as well as to define the complete specifications of the operation using target source code that is parameterized by context variables.
  • Component and attribute filter variables are used by the code generator as selection criteria to filter information from the modeling tool and to populate its dynamic generation context.
  • Context variables refer to a component or attribute property name that the code generator replaces with the actual property value associated with the current component or attribute found in its dynamic context.
  • Textual generation templates are created with programmer's instructions that are given using a rigorous syntax and are used by the source code generator to replace any context variable in the provided parameterized source code.
  • the programmer has to create textual generation templates using these symbols.
  • a mental list of such symbols must be built up in order for the programmer to stay consistent in naming the components, especially when there is more than one parametric symbol from %001 up to %999 that needs to be respectively associated with a context variable.
  • a parametric symbol can appear more than once in the parameterized source code since it is always associated with the same context variable.
  • Such symbols are not user-friendly in the sense that they do not enable the programmer to type code, as he would normally do in a non-parameterized form.
  • these symbols have to be defined within the lines of codes to ensure proper interpretation by the generator.
  • the instruction “with (&class name)” has to be added in order to instruct the generator that the parametric symbol “%1” would be replaced by the current value of the context variable associated with the current class found in the dynamic context of the generator.
  • an instruction of the kind “repeatForEach &attribute private instance using (&attribute name; &attribute attributeClassName;” would have to be included to ensure the near-repetitive operation.
  • the code generator in this case, will take the templates and transform then into source code using a model declaration for the system and filter variables that are defined in order to specify which templates are used for which components.
  • a programmer could decide to concatenate the parameterized code with the result of an instruction performed by an algorithm implemented in a given programming language. For example, like is taught in U.S. Pat. No. 5,675,801 to Lindsey, the software would solve the expression in parameterized form with the result of another operation.
  • an instruction of the kind “int ⁇ self VarName>;” could be used, in which “int” and “;” are the source code fragment portion of this source code template and the directive for the generator is “ ⁇ self VarName>”.
  • the “ ⁇ ” and “>” are arbitrary delineators indicating the beginning and the end of a generator directive.
  • the object identifier is the token “self”, which refers to the object being asked to generate itself, namely “IdNumber”, its variable name.
  • the message identifier is the token “varName” which will be the message sent to the object “self”. This message tells the object “self” to return the string representing itself when used in a variable declaration.
  • the NumericDataItemObject whose name is “IdNumber”, will return the string “idNumber”.
  • the resulting target language source code fragment is “int idNumber;”, which is a C language source code fragment.
  • Another object of the present invention is to provide an editor in which repetitive and nested code is clearly identified.
  • Another object of the present invention is to provide an editor for creating source code templates which requires a minimum of programmer intervention to obtain the desired templates.
  • Yet another object of the present invention is to provide a template editor that meets the needs for editing the template source code, which can be used in all kinds of environments such as web-based servers, framework environments, code generation or else.
  • Another object of the present invention is to use an editor to generate script templates.
  • a system for editing templates of component based source code.
  • This system comprises a context editor for entering source code and, when parameterized, context variables representing the component or attribute property name that will be replaced by the generator with its actual property value at generation time.
  • the source code is in fact captured into context blocks that can be nested among each other. They can represent a constant, conditional or repetitive context block in which case condition expressions are provided to determine if the context block is generated and how many times it will occur.
  • a second method provides for creating a source code template, contextually capturing control information, and representing context variables and context blocks using display effects. These effects comprise, among others, color, special fonts, modified cursor behaviors or even sound effects.
  • two unique preferred embodiments are provided and are both related to the manipulation of hierarchically structured control information.
  • the first process allows the efficient creation, modification and visualization of the control information for humans.
  • the second provides a deterministic transformation of this control information into a machine-understandable format.
  • the first process provides a context sensitive editor to create, modify and display hierarchically structured control information.
  • the editor presents action choices appropriate to the immediately current context, thereby simplifying the manipulation protocol of the user. Because the editor understands the relationships and multiplicity between the contexts, its graphical user interface represents the repetition and conditionality of the blocks without resorting to a scripting language.
  • the editor displays the control information according to the presentation rules of the associated context. The presentation clearly differentiates between the bulk text, the structure in which the text resides, and parameterized elements. The editor effectively manipulates what is meta control information in a way that displays it as information.
  • a method and a system for displaying hierarchically structured data comprise specifying control information concerning parametric elements of the hierarchically structured data, editing a template for the hierarchically structured data and specifying non-parametric elements of the data, specifying a context parameter as a parametric element of the data, specifying a filtering option for at least one block of the hierarchically structured data comprising at least one non-parametric element and one parametric element, associating a display characteristic with each the filtering option, displaying the hierarchically structured data identified using the display characteristic.
  • the second process provides a method to systematically transform the control information into a machine-understandable format.
  • a method for transforming hierarchically structured data into code generator script data comprises specifying control information concerning parametric elements of the hierarchically structured data, editing a template for the hierarchically structured data and specifying non-parametric elements of the data, specifying a context parameter as a parametric element of the data, specifying a filtering option for at least one block of the hierarchically structured data comprising at least one non-parametric element and one parametric element, generating code generator script data using the control information, the template, the filtering option and the context parameter for a desired source code language.
  • FIG. 1 is a class diagram of the Hierarchically Structured Data Editor
  • FIG. 2 is an example of a new template
  • FIG. 3 is an example of a template translated into a scripting language
  • FIG. 4 is an example of source code generated from the scripting language
  • FIG. 5 is a block diagram of the display and translation system
  • FIG. 6 is a flow chart of the steps that occur in a method for displaying the hierarchically structured data
  • FIG. 7 is a flow chart of the steps that occur in a method for translating the hierarchically structured data into a scripting language
  • FIG. 8 illustrates the new operation signature tool
  • FIG. 9 illustrates the created signature within the template editor
  • FIG. 10 illustrates the insertion of a context variable in a comment
  • FIG. 11 illustrates the creation of an algorithm
  • FIG. 12 illustrates the insertion of a context variable in an algorithm
  • FIG. 13 illustrates how to access the attribute level
  • FIG. 14 illustrates how to code recursive operations for the attributes
  • FIG. 15 illustrates how to insert a context variable at the attribute level
  • FIG. 16 illustrates a completed template
  • template editor In order to facilitate the coding process for template programmers, a new hierarchical structured control information editor (hereafter referred to as “template editor”) has been created. This template editor uses an editor to display the hierarchical structure and the parameterized code.
  • the main purpose of the hierarchical structured control information editor is to allow the programmer to create and edit generation templates in a form visually close to the generation output, so that it is immediately evident what output will be generated for any given input to the generator.
  • the template editor provides a graphical context editor (see FIG. 2) where the programmer can type text ( 24 ), insert context variables (25) or insert context blocks ( 23 ).
  • the difference between the user-entered text and the various kinds of context variables (25) or context blocks ( 23 ) is shown by various visual effects like text/background color, cursor/text behavior, and so on (see the Context Presentation Rules 31 of FIG. 1 ).
  • the context variables (25) cannot be modified. They are read-only strings. The only actions possible on the context variables strings is to replace or delete them.
  • FIG. 1 shows a Unified Modeling Language (UML) model of the editor's implementation.
  • UML Unified Modeling Language
  • the principle classes are Context Block 23 , Context Variable 25, and Text String 24 .
  • the following text will describe their role in relation to both Graphical User Interface (GUI) editing and script language translating.
  • GUI Graphical User Interface
  • Text strings 24 represent static data (i.e. a set of characters) in a context block 23 . Depending on the context block, the text's appearance will vary. In addition, each character has its own set of edit routines. These routines are executed when the programmer attempts to change that character. Each character of the text string 24 will also have its own set of behavioral properties. Since the character's behavioral properties tend to repeat themselves over runs of many continuous characters, a sparse representation is used in order to save computer memory.
  • a context variable 25 is linked to a model object by its context block 23 and can therefore represent the various characteristics of that object.
  • each character of a Context Variable 25 has the same structure as that of a Text String 24 .
  • the template editor 20 maintains the integrity of the context variables 25 by not permitting the representation to be edited.
  • a context block 23 contains text strings 24 , and/or context variables 25, and/or other nested context blocks 23 .
  • the role of a context block 23 is to repeatedly or conditionally produce its contents according to the conditions set upon it.
  • the programmer has to provide the selection criteria (i.e. condition and filter variables) necessary to determine the number of repetitions.
  • the programmer controls the sequencing of the context block 23 for each repetition through the use of criterias.
  • a context block 23 When filter or condition criteria have been provided for a context block 23 , the block will not be generated unless the requirements of its criteria are filled.
  • the context block 23 will be instantiated for every object matching the selection criteria.
  • Context blocks 23 have three formats: conditional ( 33 ), constant ( 23 ) and repetitive ( 32 ).
  • a conditional context block( 33 ) will be generated uniquely for each object that is captured by its filter (i.e. criteria).
  • a constant context block( 23 ) is like a conditional context block( 33 ) having its conditions always true.
  • Repetitive context blocks( 32 ) will generate repeatedly in the object for each item captured by the context block conditions (every target role in a class, for example).
  • Repetitive Context Blocks ( 32 ) are also capable of inserting user defined delimiter text in between each repetition of the block, such as inserting a comma followed by a space.
  • the text ( 24 ) is composed of a String object and an Array object with the same size as the String.
  • the Array object of the text represents the text's Behavioral Property. For each character in the String object, there is an object at the corresponding Array position which contains the information for the graphical representation of the character such as color, font size, bold or italic properties.
  • This Behavioral Property also stores the character's type, be it Context Variable or Text String 24 . These characteristics comprise the Behavioral Property, and links the text on the screen to the objects in the template editor class diagram.
  • the generation template is a sequence of Context Blocks 23 .
  • a context block contains a sequence of Text strings 24 , Context Variables 25, and Context Blocks 23 .
  • the Text String 24 represents static text which is represented as is in the script language format.
  • the Context Variable is placed in the script language format at the position where it is displayed graphically the value for the variable. This is shown in the script language format by a number proceed with ‘%’ (ex:%001). The value of the Context Variable depends on the context where it is used.
  • a Context Block is written in the script language format depending on a set of criteria.
  • the script language format is written to represent the block's repetition.
  • FIG. 1 An example will now be described to better illustrate a preferred embodiment of the present invention.
  • the example will show how to define a context hierarchy (see FIG. 1) and some presentation rules for each level of the hierarchy (see Table 1), use the control information data as defined in Table 2, define a template representing a Java method (FIG. 2 ), generate a template and obtaining a script (FIG. 3 ), execute this script using the system of published PCT patent application number WO 00/22517 entitled “Source Code Template Generator Associated with Component Development” to obtain the Java source code (FIG. 4 ).
  • Context Hierarchy describes the possible contexts used in Tables 2 and 3 and FIGS. 2, 3 , 4 . All objects used in the example belong to one of the levels of the hierarchy, and acquire the context properties associated with that level.
  • the following table defines each context. For each context, it also defines the possible context variables, sub-contexts, and properties available to the object. This definition allows the Template Editor ( 20 ) to display sub-menus, font and colors of the different Context Blocks ( 23 ).
  • FIG. 2 A template in the hierarchical structured control information editor is shown in FIG. 2 .
  • the example is instantiated on a per-class basis.
  • This Context Block contains:
  • FIG. 2 will be more readily understood using the following notes:
  • This block is instantiated on a per-attribute basis. Since the containing block is instantiated on a per-class basis, this block can be repeated an arbitrary number of times in each class instantiation. Effectively this number can be any number greater or equal to zero. (If there are zero attributes in the class then this block is skipped).
  • the scripting code of FIG. 3 is generated by passing the control data described in Table 2 into the template displayed in FIG. 2 .
  • the template creation process occurs as follows (with reference to FIG. 2 and FIG. 3 ):
  • the instance of the Generation Template indicated the information known. This known information amounts to an introduction to the template. It provides the template name, the filter (in this case, the filter is “all classes”) and the template characteristics (in this case, the template creates a Java operation):
  • the scripting responsibility is then passed to the class Context Block of the template.
  • the Context Block is embedded in the following format:
  • the first child is a Text String.
  • a Text String is generated as it appears in the script, and therefore the first Text String will write itself as:
  • the next element is a Context Variable.
  • the Context Variable In the script language, as explained previously, the Context Variable must write a reference to the object. In the script, the parameters are referenced according to the order of appearance of the Context Variables. This order is determined by the Context Block which registers its list of Context Variables and orders them by attributing a number to each variable.
  • the Context Variable performs a call to its Context Block to request its order of appearance.
  • variable obtains its order and writes:
  • the Context Block requests that each Context Variable to write its initialization Behavioral Property. The block therefore writes:
  • the block closes the parentheses for the parameters and then the context block closes the parentheses for itself:
  • the generation of the script continues iteratively for the additional block belonging to the current generation template until the template has fully been generated in the script language.
  • the bold text is derived directly from the text found in the template of FIG. 2 .
  • the underlined text is related to the context variables and the other text is structural code related to the scripting language.
  • the main block is instantiated on a per-class basis. All the control information—bulk text, context variables or subordinate blocks are instantiated once per class.
  • This block is instantiated on a per-attribute basis. Since the containing block is instantiated on a per-class basis, this block can be repeated an arbitrary number of times in each class instantiation. Effectively this number can be any number greater or equal to zero. (If there are zero attributes in the class then this block is skipped).
  • the context variables 79 and 80 are instantiated once per attribute per class.
  • FIG. 4 contains the generated code in the target language. (in this case, Java). This code is only one instance of the code that could be generated from the template shown in FIG. 2 .
  • the user interface shown in FIG. 2 implicitly manages all possible instances.
  • FIG. 5 is a block diagram of the system for hierarchically structured data and the system for generating code generator script data.
  • Editor 120 is used to enter and modify the template.
  • the editor uses the context definer 121 to introduce context variables and parametric elements.
  • the context definer 121 uses the hierarchy information definer 122 to obtain information concerning the context of the template. This context can be obtained from a UML modeling tool for example.
  • the editor 120 also uses a filter definer 123 to define filter options for the generation of source code.
  • the context definer 121 also communicates with the context identifier 125 to assign a display characteristic 124 to each context variable.
  • the editor 120 sends the template to the display 126 for display.
  • the display 126 uses the display characteristics 124 to display each parametric and non-parametric elements of the template.
  • the system also has a code generator script generator 127 which uses the template of the editor 120 , the filter definer options 123 and the context parameters of the context definer 121 to generate code generator script data.
  • FIG. 6 is a flow chart of the steps that occur in a method according to a preferred embodiment of the present invention.
  • Hierarchy information is specified 130 .
  • a template is edited 131 .
  • Context parameters are specified 132 .
  • Filtering options are also specified 133 .
  • Display characteristics are associated with context parameters 134 .
  • the data is displayed to the user 135 .
  • FIG. 7 is a flow chart of another method according to a preferred embodiment of the present invention.
  • Hierarchy information is specified 140 .
  • a template is edited 141 .
  • Context parameters are specified 142 .
  • Filtering options are also specified 143 .
  • Code generator script data is then generated 145 using the template, the context parameters and the filtering options.
  • the code generator script data is understood, from the preferred embodiment, to be a single file which comprises all relevant information for the code generator and which enables the code generator to produce source code in a target language
  • the code generator script data could comprise more than one data file which, when used by the code generator, enable it to produce source code in a target language.
  • the code generator script data could comprise a first file which is context-independent and contains the methods and classes to be generated and a second file which could contain the context-dependent information such as the details on the model.
  • the code generator script data could also only comprise context-independent data and the code generator would rely on another source to provide context-dependent information.
  • FIG. 8 shows the new operation signature tool 38 .
  • a template name 40 has to be given together with the visibility of the operation 41 , the inheritance 43 and whether the operation is static 42 .
  • the return type has to be defined by its class name 44 and its package 45 .
  • the name of the operation is typed at 46 .
  • the OK 39 button is pressed.
  • FIG. 9 shows the Template Editor 50 with the signature 52 for the operation just created.
  • This text cannot be modified directly since it is managed by the organizer.
  • the string of the signature can be double-clicked and the Operation Signature tool will reappear.
  • this text is created from the signature tool, it appears with a different visual aspect.
  • the color of the font and the color of the background are in shades of gray since the drawings are in black and white.
  • any visual characteristic could be used to enhance the difference in nature of the text appearing in the template.
  • the signature could appear with a blue background meaning that only double-clicking will allow the programmer to change what is comprised in that string.
  • the space 53 is available for coding the operation.
  • a class filter 51 is specified to determine which component or components this graphical generation template will be generated for. (these steps are not shown in the figures).
  • FIG. 10 shows the creation of a comment 58 within the operation.
  • a context variable 59 such as the attribute name 60
  • FIG. 11 shows the completion of the comment 65 and some target source code as typed by the programmer.
  • a context variable, “attribute name” was added to the code 71 of the instruction.
  • FIG. 13 illustrates the creation of the single name operation.
  • the signature 95 is represented with a different background color.
  • FIG. 14 shows, using a different background color 103 for the looped part of the code, a line of code 104 that will be repeated for some attributes. Again, it is possible to insert a context variable 109 at the attribute level, such as, for example the attribute name 110 .
  • a template is fully created in FIG. 16 . If this template were saved, a code generator, such as the one in the previously mentioned PCT publication WO 00/22517, would use the template and a model declaration to create source code.
  • One usage of this invention would be for hiding scripting language from the developer by creating the lines of codes of a template in order to generate code with a generation tool such as the one described in the commonly assigned and co-pending PCT patent application published under number WO 00/22517 and entitled “Source Code Template Generator Associated with Component Development”.
  • the template is used to generate near-repetitive and repetitive source code for components meeting the selection criteria of the generation template and found in the modeling tool or in the integrated development environment.
  • a loop has to be created using the filter variables which determine the selection criteria for items participating in the loop like, for example, components, components subclass, superclass, or attribute properties.
  • the programmer had to define the instructions for this loop in order to cover all attributes.
  • block context that will be so closely related for all attributes are identified by a visual characteristic.
  • the context block can be identified with a different background color.
  • the lines of code are typed in naturally, with context variables introduced by way of the right-mouse click. Since the editor knows that these lines will be reproduced for all attributes, the selection of context variables from the menu at the right-mouse-click will differ from the previous menu.
  • These context variables will not all belong to the same categories of context variables, for example, the context variable “ ⁇ class name>” will be available inside a repetitive context block that iterates at the attribute level of the current component or inside an inner context block that iterates on a given external property name associated to the current attribute of the current class found in the dynamic context of the generator. It is so because the generator will ask the outer level recursively up to the proper level to get the property value.
  • Loops are always identified by a visual characteristic , which enhances this programming aspect. It is important to note that even when coding at the attribute level, it is possible to insert context variables that refer to the class, for example. This allows greater flexibility since the programmer can code all operations necessary at the attribute level using all context variables.
  • the editor could be used for a library of lines of re-use code.
  • the templates can be used to create a personal or a networked library of available lines of code for re-use. In that case, since the templates are already parameterized, the programmer does not need to modify anything inside the lines of code in order to use them with his or her project. This approach saves a good amount of work for the programmer.
  • a programmer when creating pages to give customers access to their account balance, a programmer could create one HTML template using the template editor and use a parameterized component such as ⁇ account balance> for the actual balance. When generating this code, the generator would replace the account balance with the right amount for all customers independently. The web pages would then appear to be exactly the same to the viewer except for the account balance with minimal programming on the programmer's side.
  • the present invention would provide a graphical user interface that could be used in this environment without modifying the essence of the invention.
  • an improved version of the template editor would allow the programmer derive templates from the source code.
  • the programmer would not need to write code with parameterized syntax. He would store his source code in a file.
  • the generator knowing the relationships between all the components and the elements of the system then modeled, could extract information on how the code was developed. Knowing what are the names of the classes and the attributes from the model and recognizing almost-repetitive blocks of code, the editor could transform the original file into a parameterized source code for the template which could be either displayed to the programmer for approval or automatically generated and saved. The generator could then use this code and produce the generated code for the new application. The programmer would not need to write actual parameterized code.
  • the template editor embedded in a word processor application could be used to produce templates in order to generate text files such as parameterized mailing lists with tokens for the name, the address and the account representative for a client.
  • the template editor can be used to generate almost anything as long as the information on what it has to generate is available.
  • An EXtensibe Markup Language (XML) template editor could be used.
  • XML protocol could be used by the template editor to extract the information on what it has to generate.
  • XML Document Type Definition (dtd) could be used to define the meta-data used by the template editor as context variable and the XML dtd tree structure definition could be used to know the different level of the parameterized source text (i.e. used to define the proper filter variable at each nested level of a XML document that is compatible.)
  • a data time definition (dtd) file written in XML could be used.
  • the XML dtd would replace the model declaration necessary for the generation of code since it describes the data to be treated. If two files are using the same dtd file, their data files can be exchanged because the organization of this data will be the same and the template editor will have the same behavior because of it.

Abstract

The first process provides a context sensitive editor to create, modify and display hierarchically structured control information. The editor provides action choices appropriate to the immediately current context, thereby simplifying the manipulation protocol of the user. Because the editor understands the relationships and multiplicity between the contexts, its editor and display represents the repetition and conditionality of the blocks without resorting to a scripting language. The editor displays the control information according to the display rules of the associated context. The presentation clearly differentiates between the bulk text, the structure in which the text resides, and parameterized elements. The editor effectively manipulates what is meta control information in a way that displays it as information. The second process provides a method to systematically transform the control information into a machine-understandable format, such as code generator script data.

Description

This application is a continuation of patent application PCT/CA00/00841 filed on Jul. 24, 2000, designating the United States and currently pending in the international stage, which claims priority under 35 USC 119(e) of U.S. provisional patent application serial No. 60/145,207 filed Jul. 23, 1999. This application is related to applicant's co-pending application entitled “Component-based source code generator” filed simultaneously herewith, the specification of which is hereby incorporated by reference.
FIELD OF THE INVENTION
The present invention is directed toward a system and method for editing source code templates in a target language utilizing a graphical user interface. More particularly, the present invention is directed to a system and method in which a programmer parameterizes target source code with contextual meta-data provided by the application domain. He determines the repetitive and nesting structures of the code which is visually clear, easy to maintain and fully consistent.
BACKGROUND OF THE INVENTION
It is commonly said that object-oriented techniques help model the real world more closely than conventional techniques and it is mostly done using modeling tools. While building a complex system, software programmers and clients can easily establish their common vocabulary, which helps them refine system requirements effectively. Object-oriented techniques also help them build a system that is easily extensible, especially when frameworks are used.
Modeling tools are used by programmers or analysts to depict the business purpose of an application in a logical way that is abstracted from the “physical implementation” of the specific programming language, operating system and the hardware that the application runs on.
One of the reasons that object-oriented programming is becoming more popular is that software reuse is becoming more important. Developing new systems is expensive, and maintaining them is even more expensive. A recent study by Wilma Osborne of the National Bureau of Standards suggests that 60 to 85 percent of the total cost of software is due to maintenance (Ware Meyers. Interview with Wilma Osborne. IEEE Software 5(3): 104-105, 1988).
Programmers traditionally use “cut and paste” techniques to facilitate the implementation of repetitive and near-repetitive methods. A kind of template is a block of target source code annotated where the change is needed, saved in a common location and reused by a programmer with some manual interventions. The programmer who created that block of target source code or another programmer can then re-use these lines by copying and pasting the appropriate lines into the code he is working on and making the appropriate changes for that particular usage. This method is error-prone and time-requiring since, in addition to copying the right lines of codes, sometimes repeatedly, the programmer has to replace all appropriate components' names by their appropriate equivalents. This is called coding with annotated source code template.
Some generation software tools allow the programmer to use textual generation templates, which consist of parameterized lines of source code, to create new operations or components. These textual generation templates enable programmers to specify the selected components for which they want to generate code by using filter variables, as well as to define the complete specifications of the operation using target source code that is parameterized by context variables. Component and attribute filter variables are used by the code generator as selection criteria to filter information from the modeling tool and to populate its dynamic generation context. Context variables refer to a component or attribute property name that the code generator replaces with the actual property value associated with the current component or attribute found in its dynamic context.
These code generators are used to deliver generation-time control and customization for integrating frameworks with components developed using today's modeling tools and programming languages. Textual generation templates are created with programmer's instructions that are given using a rigorous syntax and are used by the source code generator to replace any context variable in the provided parameterized source code. For example, a line of code could be: “persistenceSchema=new PersistenceSchema(“%001”); with (&class name)”, in which “%001” is a parametric symbol representing where the value of the context variable would be put by the generator, for example, the context variable “<class name>”. The programmer has to create textual generation templates using these symbols. A mental list of such symbols must be built up in order for the programmer to stay consistent in naming the components, especially when there is more than one parametric symbol from %001 up to %999 that needs to be respectively associated with a context variable. A parametric symbol can appear more than once in the parameterized source code since it is always associated with the same context variable. Such symbols are not user-friendly in the sense that they do not enable the programmer to type code, as he would normally do in a non-parameterized form. In addition, these symbols have to be defined within the lines of codes to ensure proper interpretation by the generator. In the previous example, the instruction “with (&class name)” has to be added in order to instruct the generator that the parametric symbol “%1” would be replaced by the current value of the context variable associated with the current class found in the dynamic context of the generator. Also, when certain portions of the code have to be repeated more than once for attributes of a component that address the selection criteria provided by filter variables, an instruction of the kind “repeatForEach &attribute private instance using (&attribute name; &attribute attributeClassName;” would have to be included to ensure the near-repetitive operation. The code generator, in this case, will take the templates and transform then into source code using a model declaration for the system and filter variables that are defined in order to specify which templates are used for which components.
Instead of using such a syntax relying on keywords (i.e. %001) and definitions of such keywords (i.e. repeatForEach . . . using . . . or with . . . ), a programmer could decide to concatenate the parameterized code with the result of an instruction performed by an algorithm implemented in a given programming language. For example, like is taught in U.S. Pat. No. 5,675,801 to Lindsey, the software would solve the expression in parameterized form with the result of another operation. More specifically, in an example of the declaration source code template in the C language for data-oriented object known as the NumericDataItemObject and representing the C variable called “IdNumber”, an instruction of the kind “int <self VarName>;” could be used, in which “int” and “;” are the source code fragment portion of this source code template and the directive for the generator is “<self VarName>”. In this example, the “<” and “>” are arbitrary delineators indicating the beginning and the end of a generator directive. In this case, the object identifier is the token “self”, which refers to the object being asked to generate itself, namely “IdNumber”, its variable name. The message identifier is the token “varName” which will be the message sent to the object “self”. This message tells the object “self” to return the string representing itself when used in a variable declaration. In this example for Lindsey, the NumericDataItemObject, whose name is “IdNumber”, will return the string “idNumber”. The resulting target language source code fragment is “int idNumber;”, which is a C language source code fragment.
The use of colors and other display artifacts have been used in source code editors to increase the understanding of the procedural flow of an algorithm but never used to describe the structure of the information provided, such as repetitive and/or nested Context Blocks. For example, an If-then-else statement using different colors for its condition expression, its true-expression and its false-expression that have to be executed based on the result of the conditional expression. Display artifacts have never been used to illustrate the fact that the same if-then-else expression is repeated within a given component algorithm for every attribute meeting a set of selection criteria.
SUMMARY OF THE INVENTION
Accordingly, it is an object of the present invention to provide an editor that would enable programmers to create templates that are visually clear and efficient.
Another object of the present invention is to provide an editor in which repetitive and nested code is clearly identified.
Another object of the present invention is to provide an editor for creating source code templates which requires a minimum of programmer intervention to obtain the desired templates.
Yet another object of the present invention is to provide a template editor that meets the needs for editing the template source code, which can be used in all kinds of environments such as web-based servers, framework environments, code generation or else.
Another object of the present invention is to use an editor to generate script templates.
To achieve the foregoing objects in a computing environment, and in accordance with the purpose of the invention as broadly described herein, a system is provided for editing templates of component based source code. This system comprises a context editor for entering source code and, when parameterized, context variables representing the component or attribute property name that will be replaced by the generator with its actual property value at generation time. The source code is in fact captured into context blocks that can be nested among each other. They can represent a constant, conditional or repetitive context block in which case condition expressions are provided to determine if the context block is generated and how many times it will occur.
A second method provides for creating a source code template, contextually capturing control information, and representing context variables and context blocks using display effects. These effects comprise, among others, color, special fonts, modified cursor behaviors or even sound effects.
In a general aspect of the invention, two unique preferred embodiments are provided and are both related to the manipulation of hierarchically structured control information. The first process allows the efficient creation, modification and visualization of the control information for humans. The second provides a deterministic transformation of this control information into a machine-understandable format.
The first process provides a context sensitive editor to create, modify and display hierarchically structured control information. The editor presents action choices appropriate to the immediately current context, thereby simplifying the manipulation protocol of the user. Because the editor understands the relationships and multiplicity between the contexts, its graphical user interface represents the repetition and conditionality of the blocks without resorting to a scripting language. The editor displays the control information according to the presentation rules of the associated context. The presentation clearly differentiates between the bulk text, the structure in which the text resides, and parameterized elements. The editor effectively manipulates what is meta control information in a way that displays it as information.
According to a preferred embodiment of the present invention, there is provided a method and a system for displaying hierarchically structured data. The method and system comprise specifying control information concerning parametric elements of the hierarchically structured data, editing a template for the hierarchically structured data and specifying non-parametric elements of the data, specifying a context parameter as a parametric element of the data, specifying a filtering option for at least one block of the hierarchically structured data comprising at least one non-parametric element and one parametric element, associating a display characteristic with each the filtering option, displaying the hierarchically structured data identified using the display characteristic.
The second process provides a method to systematically transform the control information into a machine-understandable format.
According to another preferred embodiment of the present invention, there is provided a method for transforming hierarchically structured data into code generator script data. The method comprises specifying control information concerning parametric elements of the hierarchically structured data, editing a template for the hierarchically structured data and specifying non-parametric elements of the data, specifying a context parameter as a parametric element of the data, specifying a filtering option for at least one block of the hierarchically structured data comprising at least one non-parametric element and one parametric element, generating code generator script data using the control information, the template, the filtering option and the context parameter for a desired source code language.
BRIEF DESCRIPTION OF THE FIGURES
Having thus generally described the nature of the invention, reference will now be made to the accompanying figures, showing by way of illustration a preferred embodiment thereof, and in which
FIG. 1 is a class diagram of the Hierarchically Structured Data Editor;
FIG. 2 is an example of a new template;
FIG. 3 is an example of a template translated into a scripting language;
FIG. 4 is an example of source code generated from the scripting language;
FIG. 5 is a block diagram of the display and translation system;
FIG. 6 is a flow chart of the steps that occur in a method for displaying the hierarchically structured data;
FIG. 7 is a flow chart of the steps that occur in a method for translating the hierarchically structured data into a scripting language;
FIG. 8 illustrates the new operation signature tool;
FIG. 9 illustrates the created signature within the template editor;
FIG. 10 illustrates the insertion of a context variable in a comment;
FIG. 11 illustrates the creation of an algorithm;
FIG. 12 illustrates the insertion of a context variable in an algorithm;
FIG. 13 illustrates how to access the attribute level;
FIG. 14 illustrates how to code recursive operations for the attributes;
FIG. 15 illustrates how to insert a context variable at the attribute level; and
FIG. 16 illustrates a completed template.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
In order to facilitate the coding process for template programmers, a new hierarchical structured control information editor (hereafter referred to as “template editor”) has been created. This template editor uses an editor to display the hierarchical structure and the parameterized code.
The main purpose of the hierarchical structured control information editor is to allow the programmer to create and edit generation templates in a form visually close to the generation output, so that it is immediately evident what output will be generated for any given input to the generator. In order to make this possible, the template editor provides a graphical context editor (see FIG. 2) where the programmer can type text (24), insert context variables (25) or insert context blocks (23). The difference between the user-entered text and the various kinds of context variables (25) or context blocks (23) is shown by various visual effects like text/background color, cursor/text behavior, and so on (see the Context Presentation Rules 31 of FIG. 1). The context variables (25) cannot be modified. They are read-only strings. The only actions possible on the context variables strings is to replace or delete them.
FIG. 1 shows a Unified Modeling Language (UML) model of the editor's implementation. The principle classes are Context Block 23, Context Variable 25, and Text String 24. The following text will describe their role in relation to both Graphical User Interface (GUI) editing and script language translating.
Text strings 24 represent static data (i.e. a set of characters) in a context block 23. Depending on the context block, the text's appearance will vary. In addition, each character has its own set of edit routines. These routines are executed when the programmer attempts to change that character. Each character of the text string 24 will also have its own set of behavioral properties. Since the character's behavioral properties tend to repeat themselves over runs of many continuous characters, a sparse representation is used in order to save computer memory.
A context variable 25 is linked to a model object by its context block 23 and can therefore represent the various characteristics of that object. In the template editor 20, each character of a Context Variable 25 has the same structure as that of a Text String 24. The template editor 20 maintains the integrity of the context variables 25 by not permitting the representation to be edited.
A context block 23 contains text strings 24, and/or context variables 25, and/or other nested context blocks 23. The role of a context block 23 is to repeatedly or conditionally produce its contents according to the conditions set upon it. For context blocks 23 that need to be repeated, the programmer has to provide the selection criteria (i.e. condition and filter variables) necessary to determine the number of repetitions. The programmer controls the sequencing of the context block 23 for each repetition through the use of criterias.
When filter or condition criteria have been provided for a context block 23, the block will not be generated unless the requirements of its criteria are filled. The context block 23 will be instantiated for every object matching the selection criteria.
Context blocks 23 have three formats: conditional (33), constant (23) and repetitive (32). A conditional context block(33) will be generated uniquely for each object that is captured by its filter (i.e. criteria). A constant context block(23) is like a conditional context block(33) having its conditions always true. Repetitive context blocks(32), however, will generate repeatedly in the object for each item captured by the context block conditions (every target role in a class, for example). Repetitive Context Blocks (32) are also capable of inserting user defined delimiter text in between each repetition of the block, such as inserting a comma followed by a space.
In the actual implementation developed in an Object Oriented language, the text (24) is composed of a String object and an Array object with the same size as the String. The Array object of the text represents the text's Behavioral Property. For each character in the String object, there is an object at the corresponding Array position which contains the information for the graphical representation of the character such as color, font size, bold or italic properties. This Behavioral Property also stores the character's type, be it Context Variable or Text String 24. These characteristics comprise the Behavioral Property, and links the text on the screen to the objects in the template editor class diagram.
The translation of the generation template entered in the template editor into a script language format is now explained. As shown in the class diagram (FIG. 1), the generation template is a sequence of Context Blocks 23. A context block contains a sequence of Text strings 24, Context Variables 25, and Context Blocks 23.
The Text String 24 represents static text which is represented as is in the script language format.
The Context Variable is placed in the script language format at the position where it is displayed graphically the value for the variable. This is shown in the script language format by a number proceed with ‘%’ (ex:%001).The value of the Context Variable depends on the context where it is used.
When translating to a script language format, a Context Block is written in the script language format depending on a set of criteria. In the case of repetitive context blocks, the script language format is written to represent the block's repetition.
EXAMPLE
An example will now be described to better illustrate a preferred embodiment of the present invention. The example will show how to define a context hierarchy (see FIG. 1) and some presentation rules for each level of the hierarchy (see Table 1), use the control information data as defined in Table 2, define a template representing a Java method (FIG. 2), generate a template and obtaining a script (FIG. 3), execute this script using the system of published PCT patent application number WO 00/22517 entitled “Source Code Template Generator Associated with Component Development” to obtain the Java source code (FIG. 4).
The following Context Hierarchy describes the possible contexts used in Tables 2 and 3 and FIGS. 2, 3, 4. All objects used in the example belong to one of the levels of the hierarchy, and acquire the context properties associated with that level.
The following table defines each context. For each context, it also defines the possible context variables, sub-contexts, and properties available to the object. This definition allows the Template Editor (20) to display sub-menus, font and colors of the different Context Blocks (23).
TABLE 1
Presentation Rules for the hierarchy
Level in Type of
Hierarchy entity Display Settings Properties
1.1 Class Black on white Name:String Attributes:
{attribute}
1.1.1 Attribute Black on Orange Name:String Type:class
The information (from a UML model) used to drive the instantiation of the template is shown in Table 2.
TABLE 2
Information obtained from a UML model
Type of
Level Name entity Property Value
1.1 Cityinfo class class name cityinfo
Attributes {name country population}
1.1.1 Name attribute Attribute name name
Attribute Name Name
Attribute type String
1.1.1 Country attribute Attribute name country
Attribute Name Country
Attribute type String
1.1.1 Population attribute Attribute name population
Attribute Name Population
Attribute type Integer
A template in the hierarchical structured control information editor is shown in FIG. 2. The example is instantiated on a per-class basis.
The relation between the class diagram and the example is shown. One instance of the Generation Template corresponds to this template. This instance contains a Context Block which refers to a class Context. This Context Block contains:
TABLE 3
Contents of the Context Block
/**
A Text with the * Take Properties result set received from database,
String value: and populate
A Context with the <class name/> (Class name)
Variable value:
A Text with the 's Data fields.
String value: * @ param resultSet The data used in populating the
A Context with the <class name/> (Class name)
Variable value:
A Text with the 's Data fields
String value: */
public void setPropObjectData (java.util.Properties
resultSet) {
A Context which refers to an if(resultSet.get(“<Attribute Name/>”)
Block attribute Context and != null && !(resultSet.get( etc . . .
contains:
A Text with the }
String value:
FIG. 2 will be more readily understood using the following notes:
34. These blocks are instantiated on a per-class basis. All of the control information (bulk text, context variables or subordinate blocks) is instantiated once per class.
35. These are context variables. In their uninstantiated form, they appear as the name of the property within “<” and “>”.
36. This block is instantiated on a per-attribute basis. Since the containing block is instantiated on a per-class basis, this block can be repeated an arbitrary number of times in each class instantiation. Effectively this number can be any number greater or equal to zero. (If there are zero attributes in the class then this block is skipped).
37. These context variables are instantiated once per attribute per class.
The scripting code of FIG. 3 is generated by passing the control data described in Table 2 into the template displayed in FIG. 2.
The template creation process occurs as follows (with reference to FIG. 2 and FIG. 3):
The instance of the Generation Template indicated the information known. This known information amounts to an introduction to the template. It provides the template name, the filter (in this case, the filter is “all classes”) and the template characteristics (in this case, the template creates a Java operation):
templateName{circumflex over ( )} !setPropObjectData! definedAs{circumflex over ( )} (&class)
generate{circumflex over ( )} (
operation{circumflex over ( )} public{circumflex over ( )} instance{circumflex over ( )} (!setPropObjectData!)
definedAs{circumflex over ( )} (
The scripting responsibility is then passed to the class Context Block of the template. In the script context, the Context Block is embedded in the following format:
(!<block contents>!)
Therefore, the block writes the script for its introduction:
(!
After this, the responsibility is passed to each of its children. The first child is a Text String. A Text String is generated as it appears in the script, and therefore the first Text String will write itself as:
/**
* Take Properties result set received from database, and populate
*
The next element is a Context Variable. In the script language, as explained previously, the Context Variable must write a reference to the object. In the script, the parameters are referenced according to the order of appearance of the Context Variables. This order is determined by the Context Block which registers its list of Context Variables and orders them by attributing a number to each variable.
In this case, we have the Context Variable for a Class name. The Context Variable performs a call to its Context Block to request its order of appearance.
As it is the first Context Variable, the variable obtains its order and writes:
%001
This process will repeat similarly for all the elements of the block, resulting in the following script text:
's Data fields.
* @param resultSet The data used in populating the %001's Data fields
*/
public void setPropObjectData (java.util.Properties resultSet) {
The responsibility will be given to the Context Block, which understands that it must terminate itself with an exclamation mark (!). If the block is not repetitive and contains at least one context variable, it will write:
! with{circumflex over ( )}
If it had been a Repetitive Context Block (as is the case for the attributes), it would have written:
repeatForEach{circumflex over ( )} attributeOrTargetRoleFilterExpression{circumflex over ( )} &attribute
In this case there was no filter, but if the attribute had been private, we would have written “private” after &attribute.
Next, the Context Block requests that each Context Variable to write its initialization Behavioral Property. The block therefore writes:
(
and then each Context Variable takes its turn to write itself. The Class name Context Variable writes:
&class name{circumflex over ( )}
As the first block has no other Context Variables, the block closes the parentheses for the parameters and then the context block closes the parentheses for itself:
))
The generation of the script continues iteratively for the additional block belonging to the current generation template until the template has fully been generated in the script language.
In FIG. 3, the bold text is derived directly from the text found in the template of FIG. 2. The underlined text is related to the context variables and the other text is structural code related to the scripting language.
The following points should be noted:
75. The main block is instantiated on a per-class basis. All the control information—bulk text, context variables or subordinate blocks are instantiated once per class.
The context variables 76 and 77 are replaced once per class
76. The position to receive the replaced context variables
77. The instructions that drive the context variable replacement
78. This block is instantiated on a per-attribute basis. Since the containing block is instantiated on a per-class basis, this block can be repeated an arbitrary number of times in each class instantiation. Effectively this number can be any number greater or equal to zero. (If there are zero attributes in the class then this block is skipped). The context variables 79 and 80 are instantiated once per attribute per class.
79. The position to receive the replaced context variables
80. The instructions that drives the context variable replacement
FIG. 4 contains the generated code in the target language. (in this case, Java). This code is only one instance of the code that could be generated from the template shown in FIG. 2. The user interface shown in FIG. 2 implicitly manages all possible instances.
The following should be noted:
81. Sections of code generated on a per class basis.
82. Context Variable <Class Name> replaced by “cityinfo”
83. Context Variables replaced by data from the instance; refer to Table 2 and FIG. 2 to see how the replacement was made.
The per attribute region
84. Context block generated from Country attribute
85. Context block generated from Population attribute
86. Context block generated from Name attribute
The preferred embodiments of the present invention will now be described using the block diagram of FIG. 5 and the flow charts of FIG. 6 and FIG. 7
FIG. 5 is a block diagram of the system for hierarchically structured data and the system for generating code generator script data. Editor 120 is used to enter and modify the template. The editor uses the context definer 121 to introduce context variables and parametric elements. In turn, the context definer 121 uses the hierarchy information definer 122 to obtain information concerning the context of the template. This context can be obtained from a UML modeling tool for example. The editor 120 also uses a filter definer 123 to define filter options for the generation of source code. The context definer 121 also communicates with the context identifier 125 to assign a display characteristic 124 to each context variable. Finally, the editor 120 sends the template to the display 126 for display. The display 126 uses the display characteristics 124 to display each parametric and non-parametric elements of the template. Optionally, the system also has a code generator script generator 127 which uses the template of the editor 120, the filter definer options 123 and the context parameters of the context definer 121 to generate code generator script data.
FIG. 6 is a flow chart of the steps that occur in a method according to a preferred embodiment of the present invention. Hierarchy information is specified 130. A template is edited 131. Context parameters are specified 132. Filtering options are also specified 133. Display characteristics are associated with context parameters 134. Finally, the data is displayed to the user 135.
FIG. 7 is a flow chart of another method according to a preferred embodiment of the present invention. Hierarchy information is specified 140. A template is edited 141. Context parameters are specified 142. Filtering options are also specified 143. Code generator script data is then generated 145 using the template, the context parameters and the filtering options.
Although the code generator script data is understood, from the preferred embodiment, to be a single file which comprises all relevant information for the code generator and which enables the code generator to produce source code in a target language, it will be understood that the code generator script data could comprise more than one data file which, when used by the code generator, enable it to produce source code in a target language. For enable, the code generator script data could comprise a first file which is context-independent and contains the methods and classes to be generated and a second file which could contain the context-dependent information such as the details on the model. The code generator script data could also only comprise context-independent data and the code generator would rely on another source to provide context-dependent information.
A specific example in which screen shots of a user interface created according to a preferred embodiment of the present invention will now be shown.
FIG. 8 shows the new operation signature tool 38. A template name 40 has to be given together with the visibility of the operation 41, the inheritance 43 and whether the operation is static 42. The return type has to be defined by its class name 44 and its package 45. The name of the operation is typed at 46. When the information is completed, the OK 39 button is pressed.
FIG. 9 shows the Template Editor 50 with the signature 52 for the operation just created. This text cannot be modified directly since it is managed by the organizer. In order to make modifications, the string of the signature can be double-clicked and the Operation Signature tool will reappear. To show that this text is created from the signature tool, it appears with a different visual aspect. In the Figures, the color of the font and the color of the background are in shades of gray since the drawings are in black and white. However, any visual characteristic could be used to enhance the difference in nature of the text appearing in the template. For example, the signature could appear with a blue background meaning that only double-clicking will allow the programmer to change what is comprised in that string. The space 53 is available for coding the operation. It is represented by a differently colored background to show that it can be filled in by the programmer. If, for example, a programmer is visually impaired, the visual effects on the screen could be replaced by sounds. In fact, as long as there is an indication that some parts of the code have different characteristics, anything could be used. A class filter 51 is specified to determine which component or components this graphical generation template will be generated for. (these steps are not shown in the figures).
FIG. 10 shows the creation of a comment 58 within the operation. As can be seen, a context variable 59, such as the attribute name 60, can be added to the comment. FIG. 11 shows the completion of the comment 65 and some target source code as typed by the programmer. As shown in FIG. 12, by using the process described in FIG. 10, a context variable, “attribute name”, was added to the code 71 of the instruction.
FIG. 13 illustrates the creation of the single name operation. Again, the signature 95 is represented with a different background color. There is a comment 96 and the operation is coded at 97. If a part of the code of the operation needs to be repeated for some or all attributes of a component, it is possible to enter the attribute level 98 and create a loop. FIG. 14 shows, using a different background color 103 for the looped part of the code, a line of code 104 that will be repeated for some attributes. Again, it is possible to insert a context variable 109 at the attribute level, such as, for example the attribute name 110. Finally, a template is fully created in FIG. 16. If this template were saved, a code generator, such as the one in the previously mentioned PCT publication WO 00/22517, would use the template and a model declaration to create source code.
This invention could be used in different environments, some of which will be described herewith.
One usage of this invention would be for hiding scripting language from the developer by creating the lines of codes of a template in order to generate code with a generation tool such as the one described in the commonly assigned and co-pending PCT patent application published under number WO 00/22517 and entitled “Source Code Template Generator Associated with Component Development”. In that case, the template is used to generate near-repetitive and repetitive source code for components meeting the selection criteria of the generation template and found in the modeling tool or in the integrated development environment.
When typing a context block which will be used for all classes of a system, the programmer only needs to type the method as he would like it to be when generated. Instead of writing the name of the class, he can right-mouse-click on the context editor at the point where he would like to write the class name and select from a list of all possible context variables, what he would like to appear. In this case, he would choose “<class name>”. Referring to the example covered in the prior art section, the new line of code would be:
“persistenceSchema=new PersistenceSchema(“<class name>”);”
The context variable “<class name>” was introduced automatically by the editor once chosen in the menu appearing after the right-mouse-click.
When some context block have to be repeated more than once within the same algorithm, a loop has to be created using the filter variables which determine the selection criteria for items participating in the loop like, for example, components, components subclass, superclass, or attribute properties. In the previous example, the programmer had to define the instructions for this loop in order to cover all attributes. In the new template editor, block context that will be so closely related for all attributes are identified by a visual characteristic.
For example, the context block can be identified with a different background color. Then, the lines of code are typed in naturally, with context variables introduced by way of the right-mouse click. Since the editor knows that these lines will be reproduced for all attributes, the selection of context variables from the menu at the right-mouse-click will differ from the previous menu. These context variables will not all belong to the same categories of context variables, for example, the context variable “<class name>” will be available inside a repetitive context block that iterates at the attribute level of the current component or inside an inner context block that iterates on a given external property name associated to the current attribute of the current class found in the dynamic context of the generator. It is so because the generator will ask the outer level recursively up to the proper level to get the property value. Loops are always identified by a visual characteristic , which enhances this programming aspect. It is important to note that even when coding at the attribute level, it is possible to insert context variables that refer to the class, for example. This allows greater flexibility since the programmer can code all operations necessary at the attribute level using all context variables.
In another environment, the editor could be used for a library of lines of re-use code. For example, the templates can be used to create a personal or a networked library of available lines of code for re-use. In that case, since the templates are already parameterized, the programmer does not need to modify anything inside the lines of code in order to use them with his or her project. This approach saves a good amount of work for the programmer.
Another example of how these templates could be used is web-oriented. Until now, the HTML developers had to code web pages using pointers or tokens to the correct information. They would introduce the HTML codes that manage the presentation of the pages and include codes to access the proper information in the server's databases. Again, the template editor, inserted within his web page editing tool, would allow this programmer to create all visual aspects of the web page without worrying about the codes needed to access the data from the databases. The programmer could code the web page using traditional HTML language and add context variables reflecting the description of the information needed from the database when there is a need for generating code specific to a particular page. For example, when creating pages to give customers access to their account balance, a programmer could create one HTML template using the template editor and use a parameterized component such as <account balance> for the actual balance. When generating this code, the generator would replace the account balance with the right amount for all customers independently. The web pages would then appear to be exactly the same to the viewer except for the account balance with minimal programming on the programmer's side. The present invention would provide a graphical user interface that could be used in this environment without modifying the essence of the invention.
In the same manner, an improved version of the template editor would allow the programmer derive templates from the source code. The programmer would not need to write code with parameterized syntax. He would store his source code in a file. When realizing that this code could be reused, he could specify to the generation in which occasion this code was used, with which components, within which framework. The generator, knowing the relationships between all the components and the elements of the system then modeled, could extract information on how the code was developed. Knowing what are the names of the classes and the attributes from the model and recognizing almost-repetitive blocks of code, the editor could transform the original file into a parameterized source code for the template which could be either displayed to the programmer for approval or automatically generated and saved. The generator could then use this code and produce the generated code for the new application. The programmer would not need to write actual parameterized code.
Also, the template editor embedded in a word processor application, could be used to produce templates in order to generate text files such as parameterized mailing lists with tokens for the name, the address and the account representative for a client.
In fact, the template editor can be used to generate almost anything as long as the information on what it has to generate is available. An EXtensibe Markup Language (XML) template editor could be used. XML protocol could be used by the template editor to extract the information on what it has to generate. XML Document Type Definition (dtd) could be used to define the meta-data used by the template editor as context variable and the XML dtd tree structure definition could be used to know the different level of the parameterized source text (i.e. used to define the proper filter variable at each nested level of a XML document that is compatible.) Instead of a model declaration built using a modeling tool, a data time definition (dtd) file written in XML could be used. In that case, the XML dtd would replace the model declaration necessary for the generation of code since it describes the data to be treated. If two files are using the same dtd file, their data files can be exchanged because the organization of this data will be the same and the template editor will have the same behavior because of it.
While the invention has been described with particular reference to the illustrated embodiment, it will be understood that numerous modifications thereto will appear to those skilled in the art. Accordingly, the above description and accompanying drawings should be taken as illustrative of the invention and not in a limiting sense.

Claims (18)

What is claimed is:
1. A system for displaying hierarchically structured data, comprising:
a hierarchy information definer for specifying hierarchy information concerning parametric elements of said hierarchically structured data;
an editor for editing a template for said hierarchically structured data and specifying non-parametric elements of said data;
a context definer for specifying a context parameter as a parametric element of said data;
a context identifier for associating a display characteristic with each said context parameter;
a filter definer for specifying a filtering option for at least one block of said hierarchically structured data comprising at least one said non-parametric element and at least one said parametric element; and
a display for displaying said hierarchically structured data identified using said display characteristic.
2. A system as claimed in claim 1, wherein said display characteristic is a font format.
3. A system as claimed in claim 1, wherein said display characteristic is a background color.
4. A system as claimed in claim 1, wherein said template for hierarchically structured data comprises component-based source code.
5. A system as claimed in claim 1, wherein said at least one block of said hierarchically structured data is one of a constant, a conditional and a repetitive block of code.
6. A system as claimed in claim 1, wherein said hierarchy information definer uses hierarchy information from a Unified Modeling Language modeling application.
7. A method for displaying hierarchically structured data, comprising the steps of:
specifying hierarchy information concerning parametric elements of said hierarchically structured data;
editing a template for said hierarchically structured data and specifying non-parametric elements of said data;
specifying a context parameter as a parametric element of said data;
associating a display characteristic with each said context parameter;
specifying a filtering option for at least one block of said hierarchically structured data comprising at least one non-parametric element and one parametric element; and
displaying said hierarchically structured data identified using said display characteristic.
8. A method as claimed in claim 7, wherein said editing a template for said hierarchically structured data comprises inputting code into a text pane.
9. A method as claimed in claim 7, wherein said specifying a context parameter comprises using a context parameter definer to determine parameter characteristics of said parametric element and inserting a symbolic representation of said context parameter in said data.
10. A method as claimed in claim 9, wherein using said context parameter definer comprises obtaining context sensitive information concerning said data from said hierarchy information and providing a list of context parameters available to be specified.
11. A method as claimed in claim 7, wherein said specifying hierarchy information comprising using a Unified Modeling Language modeling application to specify said hierarchy information.
12. A method as claimed in claim 7, wherein said display characteristic is a font format.
13. A method for transforming hierarchically structured data into code generator script data, comprising the steps of:
specifying hierarchy information concerning parametric elements of said hierarchically structured data;
editing a template for said hierarchically structured data and specifying non-parametric elements of said data;
specifying a context parameter as a parametric element of said data;
specifying a filtering option for at least one block of said hierarchically structured data comprising at least one non-parametric element and one parametric element;
generating code generator script data using said hierarchy information, said template, said filtering option and said context parameter for a desired source code language.
14. A method as claimed in claim 13, further comprising a step of specifying translation data comprising source code expressions associated with said elements.
15. A method as claimed in claim 13, wherein said code generator script data is used by a code generator to generate source code comprising at least one of repetitive, nested and near-repetitive source code in said desired source code language.
16. A system for transforming hierarchically structured data into code generator script data, comprising:
a hierarchy information definer for specifying hierarchy information concerning parametric elements of said hierarchically structured data;
an editor for editing a template for said hierarchically structured data and specifying non-parametric elements of said data;
a context definer for specifying a context parameter as a parametric element of said data;
a filter definer for specifying a filtering option for at least one block of said hierarchically structured data comprising at least one non-parametric element and one parametric element;
a script generator for generating code generator script data using said hierarchy information, said template, said filtering option and said context parameter for a desired source code language.
17. A system as claimed in claim 16, further comprising a translation data definer for specifying translation data comprising source code expressions associated with said elements.
18. A system as claimed in claim 16, wherein said code generator script data is used by a code generator to generate source code comprising at least one of repetitive, nested and near-repetitive source code in said desired source code language.
US09/721,902 1999-07-23 2000-11-27 Hierarchically structured control information editor Expired - Lifetime US6769095B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/721,902 US6769095B1 (en) 1999-07-23 2000-11-27 Hierarchically structured control information editor

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14520799P 1999-07-23 1999-07-23
PCT/CA2000/000841 WO2001008002A2 (en) 1999-07-23 2000-07-24 Hierarchically structured control information editor
US09/721,902 US6769095B1 (en) 1999-07-23 2000-11-27 Hierarchically structured control information editor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2000/000841 Continuation WO2001008002A2 (en) 1999-07-23 2000-07-24 Hierarchically structured control information editor

Publications (1)

Publication Number Publication Date
US6769095B1 true US6769095B1 (en) 2004-07-27

Family

ID=32716671

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/721,902 Expired - Lifetime US6769095B1 (en) 1999-07-23 2000-11-27 Hierarchically structured control information editor

Country Status (1)

Country Link
US (1) US6769095B1 (en)

Cited By (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010047402A1 (en) * 2000-03-30 2001-11-29 Akihiro Saimi Method for developing web applications, development support system, and storage medium for storing programs developed according to the method
US20020188869A1 (en) * 2001-06-11 2002-12-12 Paul Patrick System and method for server security and entitlement processing
US20030067498A1 (en) * 2001-10-09 2003-04-10 Xerox Corporation Method and apparatus for displaying literary and linguistic information about words
US20030074648A1 (en) * 2001-09-28 2003-04-17 Michel Brassard System and method for managing architectural layers within a software model
US20030126558A1 (en) * 2001-10-24 2003-07-03 Griffin Philip B. System and method for XML data representation of portlets
US20040167868A1 (en) * 2003-02-20 2004-08-26 Bea Systems, Inc. System and method for a virtual content repository
US20040230917A1 (en) * 2003-02-28 2004-11-18 Bales Christopher E. Systems and methods for navigating a graphical hierarchy
US20040230947A1 (en) * 2003-02-28 2004-11-18 Bales Christopher E. Systems and methods for personalizing a portal
US20040237043A1 (en) * 2001-09-12 2004-11-25 Toshihiro Shima Source file generation apparatus
US20050044528A1 (en) * 2003-08-18 2005-02-24 Olsen Jesse Dale Systems and methods for viewing code
US20050071813A1 (en) * 2003-09-30 2005-03-31 Reimer Darrell Christopher Program analysis tool presenting object containment and temporal flow information
US20050234942A1 (en) * 2004-04-13 2005-10-20 Bea Systems, Inc. System and method for content and schema lifecycles
US20050256906A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Interface for portal and webserver administration-efficient updates
US20050257154A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Graphical association of elements for portal and webserver administration
US20050257172A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Interface for filtering for portal and webserver administration
US20060123026A1 (en) * 2004-11-18 2006-06-08 Bea Systems, Inc. Client server conversion for representing hierarchical data structures
US20060168562A1 (en) * 2005-01-24 2006-07-27 International Business Machines Corporation Viewing and editing markup language files with complex semantics
US20060174132A1 (en) * 2003-02-20 2006-08-03 Bea Systems, Inc. Federated management of content repositories
US20060242173A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Methods of using an integrated development environment to configure business applications
US20060242175A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for identifying problems of a business application in a customer support system
US20060242194A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for modeling and manipulating a table-driven business application in an object-oriented environment
US20060242170A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for off-line modeling a business application
US20060248087A1 (en) * 2005-04-29 2006-11-02 International Business Machines Corporation System and method for on-demand analysis of unstructured text data returned from a database
US20060271537A1 (en) * 2005-05-12 2006-11-30 Sivakumar Chandrasekharan Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US20060293935A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for incrementally exposing business application errors using an integrated display
US20060293934A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for providing an integrated business application configuration environment
US20060294158A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for data-focused debugging and tracing capabilities
US20070073426A1 (en) * 2005-09-29 2007-03-29 Rockwell Automation Technologies, Inc. Editing and configuring device
US20070078536A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Production monitoring and control system having organizational structure-based presentation layer
US20070078667A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US20070130519A1 (en) * 2005-12-07 2007-06-07 Microsoft Corporation Arbitrary rendering of visual elements on a code editor
US20070150855A1 (en) * 2003-05-12 2007-06-28 Jeong An M Method and system of developing a software with utilizing extended metadata of component under component-based development environment
US20070192694A1 (en) * 2006-02-13 2007-08-16 Microsoft Corporation Information display for disparate data sets
US20080077980A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Pagelets
US20080127056A1 (en) * 2006-08-09 2008-05-29 Microsoft Corporation Generation of managed assemblies for networks
US20080163259A1 (en) * 2006-12-29 2008-07-03 Verizon Business Financial Management Corp. Generation of menus for multiple back-end systems
US20080256465A1 (en) * 2007-04-16 2008-10-16 Microsoft Corporation Arbitrary Object Editing
US20090021767A1 (en) * 2004-11-12 2009-01-22 Justsystems Corporation Document processing device
US20090158135A1 (en) * 2007-12-14 2009-06-18 Sap Ag Context Control
US20090164971A1 (en) * 2007-12-19 2009-06-25 International Business Machines Corporation Convention Based UML Modeling Tool
US20090172633A1 (en) * 2005-04-22 2009-07-02 Sap Ag Methods of transforming application layer structure as objects
US20090327862A1 (en) * 2008-06-30 2009-12-31 Roy Emek Viewing and editing markup language files with complex semantics
US20100005498A1 (en) * 2008-07-03 2010-01-07 Ebay Inc. Systems and methods for publishing and/or sharing media presentations over a network
US7650405B2 (en) 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US7653930B2 (en) 2003-02-14 2010-01-26 Bea Systems, Inc. Method for role and resource policy management optimization
US7660638B2 (en) 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US7673323B1 (en) 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US7725560B2 (en) 2002-05-01 2010-05-25 Bea Systems Inc. Web service-enabled portlet wizard
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US7752205B2 (en) 2005-09-26 2010-07-06 Bea Systems, Inc. Method and system for interacting with a virtual content repository
US7774601B2 (en) 2004-04-06 2010-08-10 Bea Systems, Inc. Method for delegated administration
US7809683B2 (en) 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US7818344B2 (en) 2005-09-26 2010-10-19 Bea Systems, Inc. System and method for providing nested types for content management
US7840614B2 (en) 2003-02-20 2010-11-23 Bea Systems, Inc. Virtual content repository application program interface
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US7917537B2 (en) 2005-09-26 2011-03-29 Oracle International Corporation System and method for providing link property types for content management
US7953734B2 (en) 2005-09-26 2011-05-31 Oracle International Corporation System and method for providing SPI extensions for content management system
US7992189B2 (en) 2003-02-14 2011-08-02 Oracle International Corporation System and method for hierarchical role-based entitlements
US8060223B2 (en) 2005-09-29 2011-11-15 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US8275680B2 (en) 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US8463852B2 (en) 2006-10-06 2013-06-11 Oracle International Corporation Groupware portlets for integrating a portal with groupware systems
US8484250B2 (en) 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US20140033010A1 (en) * 2009-09-17 2014-01-30 Adobe Systems Incorporated Method and system for dynamic assembly of form fragments
US8799800B2 (en) 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US20140250124A1 (en) * 2011-09-01 2014-09-04 Tokyo Institute Of Technology Data editing device and data editing method
US8831966B2 (en) 2003-02-14 2014-09-09 Oracle International Corporation Method for delegated administration
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9087064B2 (en) * 2011-10-27 2015-07-21 International Business Machines Corporation User-defined hierarchies in file system data sets
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9805694B2 (en) 2004-09-30 2017-10-31 Rockwell Automation Technologies Inc. Systems and methods for automatic visualization configuration
US10282391B2 (en) 2008-07-03 2019-05-07 Ebay Inc. Position editing tool of collage multi-media
US20210149376A1 (en) * 2019-11-18 2021-05-20 Rockwell Automation Technologies, Inc. Data models for defining data transmission workflow and facilitating data communication
US11048672B2 (en) 2018-09-27 2021-06-29 International Business Machines Corporation Binary large object platform for interactively analyzing and editing structural metadata
US11354022B2 (en) 2008-07-03 2022-06-07 Ebay Inc. Multi-directional and variable speed navigation of collage multi-media

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0398646A2 (en) 1989-05-15 1990-11-22 International Business Machines Corporation User interface tool
US5603018A (en) 1991-07-15 1997-02-11 Mitsubishi Denki Kabushiki Kaisha Program developing system allowing a specification definition to be represented by a plurality of different graphical, non-procedural representation formats
US5842020A (en) * 1997-01-31 1998-11-24 Sun Microsystems, Inc. System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
EP0897148A1 (en) 1997-08-14 1999-02-17 International Business Machines Corporation Method of error handling in a framework
US5875331A (en) 1994-09-30 1999-02-23 International Business Machines Corp. System and method for generating target language code utilizing an object oriented code generator
WO1999048000A1 (en) 1998-03-16 1999-09-23 Acuity Imaging, Llc Object oriented method of structuring a software step program
US6018628A (en) * 1998-06-16 2000-01-25 Sun Microsystems, Inc. Method of implementing parameterized types to be compatible with existing unparameterized libraries
US6118445A (en) * 1996-11-13 2000-09-12 Matsushita Electric Industrial Co., Ltd. System stream reproduction control information editing apparatus and a recording medium on which the method used therein is recorded
US6526423B2 (en) * 1998-11-12 2003-02-25 Printable Technologies, Inc. System and method for creating, generating and processing user-defined generic specs

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0398646A2 (en) 1989-05-15 1990-11-22 International Business Machines Corporation User interface tool
US5603018A (en) 1991-07-15 1997-02-11 Mitsubishi Denki Kabushiki Kaisha Program developing system allowing a specification definition to be represented by a plurality of different graphical, non-procedural representation formats
US5875331A (en) 1994-09-30 1999-02-23 International Business Machines Corp. System and method for generating target language code utilizing an object oriented code generator
US6118445A (en) * 1996-11-13 2000-09-12 Matsushita Electric Industrial Co., Ltd. System stream reproduction control information editing apparatus and a recording medium on which the method used therein is recorded
US5842020A (en) * 1997-01-31 1998-11-24 Sun Microsystems, Inc. System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
EP0897148A1 (en) 1997-08-14 1999-02-17 International Business Machines Corporation Method of error handling in a framework
WO1999048000A1 (en) 1998-03-16 1999-09-23 Acuity Imaging, Llc Object oriented method of structuring a software step program
US6018628A (en) * 1998-06-16 2000-01-25 Sun Microsystems, Inc. Method of implementing parameterized types to be compatible with existing unparameterized libraries
US6526423B2 (en) * 1998-11-12 2003-02-25 Printable Technologies, Inc. System and method for creating, generating and processing user-defined generic specs

Cited By (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673323B1 (en) 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
US20010047402A1 (en) * 2000-03-30 2001-11-29 Akihiro Saimi Method for developing web applications, development support system, and storage medium for storing programs developed according to the method
US7080350B2 (en) * 2000-03-31 2006-07-18 Hitachi Software Engineering Co., Ltd. Method for developing Web applications, development support system and storage medium for storing programs developed according to the method
US20020188869A1 (en) * 2001-06-11 2002-12-12 Paul Patrick System and method for server security and entitlement processing
US20040237043A1 (en) * 2001-09-12 2004-11-25 Toshihiro Shima Source file generation apparatus
US7493557B2 (en) * 2001-09-12 2009-02-17 Seiko Epson Corporation Source file generation apparatus
US20030074648A1 (en) * 2001-09-28 2003-04-17 Michel Brassard System and method for managing architectural layers within a software model
US7191429B2 (en) * 2001-09-28 2007-03-13 Manyeta Informatique Inc. System and method for managing architectural layers within a software model
US6918097B2 (en) * 2001-10-09 2005-07-12 Xerox Corporation Method and apparatus for displaying literary and linguistic information about words
US20030067498A1 (en) * 2001-10-09 2003-04-10 Xerox Corporation Method and apparatus for displaying literary and linguistic information about words
US20030145275A1 (en) * 2001-10-24 2003-07-31 Shelly Qian System and method for portal rendering
US20030126558A1 (en) * 2001-10-24 2003-07-03 Griffin Philip B. System and method for XML data representation of portlets
US7725560B2 (en) 2002-05-01 2010-05-25 Bea Systems Inc. Web service-enabled portlet wizard
US7653930B2 (en) 2003-02-14 2010-01-26 Bea Systems, Inc. Method for role and resource policy management optimization
US7992189B2 (en) 2003-02-14 2011-08-02 Oracle International Corporation System and method for hierarchical role-based entitlements
US8831966B2 (en) 2003-02-14 2014-09-09 Oracle International Corporation Method for delegated administration
US20040167868A1 (en) * 2003-02-20 2004-08-26 Bea Systems, Inc. System and method for a virtual content repository
US8099779B2 (en) 2003-02-20 2012-01-17 Oracle International Corporation Federated management of content repositories
US20060174132A1 (en) * 2003-02-20 2006-08-03 Bea Systems, Inc. Federated management of content repositories
US7840614B2 (en) 2003-02-20 2010-11-23 Bea Systems, Inc. Virtual content repository application program interface
US20040230917A1 (en) * 2003-02-28 2004-11-18 Bales Christopher E. Systems and methods for navigating a graphical hierarchy
US20040230947A1 (en) * 2003-02-28 2004-11-18 Bales Christopher E. Systems and methods for personalizing a portal
US7810036B2 (en) 2003-02-28 2010-10-05 Bea Systems, Inc. Systems and methods for personalizing a portal
US20070150855A1 (en) * 2003-05-12 2007-06-28 Jeong An M Method and system of developing a software with utilizing extended metadata of component under component-based development environment
US20050044528A1 (en) * 2003-08-18 2005-02-24 Olsen Jesse Dale Systems and methods for viewing code
US7530054B2 (en) * 2003-09-30 2009-05-05 International Business Machines Corporation Program analysis tool presenting object containment and temporal flow information
US20050071813A1 (en) * 2003-09-30 2005-03-31 Reimer Darrell Christopher Program analysis tool presenting object containment and temporal flow information
US7774601B2 (en) 2004-04-06 2010-08-10 Bea Systems, Inc. Method for delegated administration
US20050234942A1 (en) * 2004-04-13 2005-10-20 Bea Systems, Inc. System and method for content and schema lifecycles
US7240076B2 (en) 2004-04-13 2007-07-03 Bea Systems, Inc. System and method for providing a lifecycle for information in a virtual content repository
US20050257172A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Interface for filtering for portal and webserver administration
US20050257154A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Graphical association of elements for portal and webserver administration
US20050256906A1 (en) * 2004-05-14 2005-11-17 Bea Systems, Inc. Interface for portal and webserver administration-efficient updates
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US9805694B2 (en) 2004-09-30 2017-10-31 Rockwell Automation Technologies Inc. Systems and methods for automatic visualization configuration
US20090021767A1 (en) * 2004-11-12 2009-01-22 Justsystems Corporation Document processing device
US20060123026A1 (en) * 2004-11-18 2006-06-08 Bea Systems, Inc. Client server conversion for representing hierarchical data structures
US7783670B2 (en) 2004-11-18 2010-08-24 Bea Systems, Inc. Client server conversion for representing hierarchical data structures
US7412649B2 (en) 2005-01-24 2008-08-12 International Business Machines Corporation Viewing and editing markup language files with complex semantics
US20060168562A1 (en) * 2005-01-24 2006-07-27 International Business Machines Corporation Viewing and editing markup language files with complex semantics
US20060293935A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for incrementally exposing business application errors using an integrated display
US20060242194A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for modeling and manipulating a table-driven business application in an object-oriented environment
US20060242173A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Methods of using an integrated development environment to configure business applications
US7958486B2 (en) 2005-04-22 2011-06-07 Sap Ag Methods and systems for data-focused debugging and tracing capabilities
US20060242175A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for identifying problems of a business application in a customer support system
US20060294158A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for data-focused debugging and tracing capabilities
US7941463B2 (en) 2005-04-22 2011-05-10 Sap Ag Methods of transforming application layer structure as objects
US20060293934A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for providing an integrated business application configuration environment
US7720879B2 (en) 2005-04-22 2010-05-18 Sap Ag Methods of using an integrated development environment to configure business applications
US8539003B2 (en) 2005-04-22 2013-09-17 Sap Ag Systems and methods for identifying problems of a business application in a customer support system
US7702638B2 (en) 2005-04-22 2010-04-20 Sap Ag Systems and methods for off-line modeling a business application
US20090172633A1 (en) * 2005-04-22 2009-07-02 Sap Ag Methods of transforming application layer structure as objects
US20060242170A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for off-line modeling a business application
US20060248087A1 (en) * 2005-04-29 2006-11-02 International Business Machines Corporation System and method for on-demand analysis of unstructured text data returned from a database
US20060271537A1 (en) * 2005-05-12 2006-11-30 Sivakumar Chandrasekharan Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US9317259B2 (en) 2005-05-12 2016-04-19 International Business Machines Corporation Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US7809683B2 (en) 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US8799800B2 (en) 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7650405B2 (en) 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US9557900B2 (en) 2005-05-13 2017-01-31 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US7917537B2 (en) 2005-09-26 2011-03-29 Oracle International Corporation System and method for providing link property types for content management
US7752205B2 (en) 2005-09-26 2010-07-06 Bea Systems, Inc. Method and system for interacting with a virtual content repository
US7818344B2 (en) 2005-09-26 2010-10-19 Bea Systems, Inc. System and method for providing nested types for content management
US8316025B2 (en) 2005-09-26 2012-11-20 Oracle International Corporation System and method for providing SPI extensions for content management system
US7953734B2 (en) 2005-09-26 2011-05-31 Oracle International Corporation System and method for providing SPI extensions for content management system
US8280537B2 (en) 2005-09-29 2012-10-02 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US8060223B2 (en) 2005-09-29 2011-11-15 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US7881812B2 (en) 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US20070073426A1 (en) * 2005-09-29 2007-03-29 Rockwell Automation Technologies, Inc. Editing and configuring device
US8855791B2 (en) 2005-09-30 2014-10-07 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US7650196B2 (en) 2005-09-30 2010-01-19 Rockwell Automation Technologies, Inc. Production monitoring and control system having organizational structure-based presentation layer
US7801628B2 (en) 2005-09-30 2010-09-21 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US20070078536A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Production monitoring and control system having organizational structure-based presentation layer
US20070078667A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US20080269917A1 (en) * 2005-09-30 2008-10-30 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US7660638B2 (en) 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US8019796B1 (en) 2005-09-30 2011-09-13 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US8484250B2 (en) 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US8086649B1 (en) 2005-09-30 2011-12-27 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US8438191B1 (en) 2005-09-30 2013-05-07 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US8204609B2 (en) 2005-09-30 2012-06-19 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US8275680B2 (en) 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US20070130519A1 (en) * 2005-12-07 2007-06-07 Microsoft Corporation Arbitrary rendering of visual elements on a code editor
US7721196B2 (en) 2005-12-07 2010-05-18 Microsoft Corporation Arbitrary rendering of visual elements on a code editor
US20070192694A1 (en) * 2006-02-13 2007-08-16 Microsoft Corporation Information display for disparate data sets
US9128727B2 (en) * 2006-08-09 2015-09-08 Microsoft Technology Licensing, Llc Generation of managed assemblies for networks
US20080127056A1 (en) * 2006-08-09 2008-05-29 Microsoft Corporation Generation of managed assemblies for networks
US20080077981A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Pagelets in adaptive tags in non-portal reverse proxy
US20110047611A1 (en) * 2006-09-22 2011-02-24 Bea Systems, Inc. User Role Mapping in Web Applications
US20080077980A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Pagelets
US20080250388A1 (en) * 2006-09-22 2008-10-09 Bea Systems, Inc. Pagelets in adaptive tags
US20080077982A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Credential vault encryption
US8136150B2 (en) 2006-09-22 2012-03-13 Oracle International Corporation User role mapping in web applications
US20080313728A1 (en) * 2006-09-22 2008-12-18 Bea Systems, Inc. Interstitial pages
US7904953B2 (en) 2006-09-22 2011-03-08 Bea Systems, Inc. Pagelets
US20080077983A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Non-invasive insertion of pagelets
US7861289B2 (en) 2006-09-22 2010-12-28 Oracle International Corporation Pagelets in adaptive tags in non-portal reverse proxy
US8397283B2 (en) 2006-09-22 2013-03-12 Oracle International Corporation User role mapping in web applications
US7886352B2 (en) 2006-09-22 2011-02-08 Oracle International Corporation Interstitial pages
US7861290B2 (en) 2006-09-22 2010-12-28 Oracle International Corporation Non-invasive insertion of pagelets
US20080077809A1 (en) * 2006-09-22 2008-03-27 Bea Systems, Inc. Credential Vault Encryption
US7865943B2 (en) 2006-09-22 2011-01-04 Oracle International Corporation Credential vault encryption
US8463852B2 (en) 2006-10-06 2013-06-11 Oracle International Corporation Groupware portlets for integrating a portal with groupware systems
US8438581B2 (en) * 2006-12-29 2013-05-07 Verizon Patent And Licensing Inc. Generation of menus for multiple back-end systems
US20080163259A1 (en) * 2006-12-29 2008-07-03 Verizon Business Financial Management Corp. Generation of menus for multiple back-end systems
US20080256465A1 (en) * 2007-04-16 2008-10-16 Microsoft Corporation Arbitrary Object Editing
US8959489B2 (en) 2007-04-16 2015-02-17 Microsoft Corporation Arbitrary object editing
US20090158135A1 (en) * 2007-12-14 2009-06-18 Sap Ag Context Control
US8533584B2 (en) 2007-12-14 2013-09-10 Sap Ag Context control
US20090164971A1 (en) * 2007-12-19 2009-06-25 International Business Machines Corporation Convention Based UML Modeling Tool
US20090327862A1 (en) * 2008-06-30 2009-12-31 Roy Emek Viewing and editing markup language files with complex semantics
US20100005498A1 (en) * 2008-07-03 2010-01-07 Ebay Inc. Systems and methods for publishing and/or sharing media presentations over a network
US10853555B2 (en) 2008-07-03 2020-12-01 Ebay, Inc. Position editing tool of collage multi-media
US11682150B2 (en) 2008-07-03 2023-06-20 Ebay Inc. Systems and methods for publishing and/or sharing media presentations over a network
US11373028B2 (en) 2008-07-03 2022-06-28 Ebay Inc. Position editing tool of collage multi-media
US11354022B2 (en) 2008-07-03 2022-06-07 Ebay Inc. Multi-directional and variable speed navigation of collage multi-media
US11100690B2 (en) 2008-07-03 2021-08-24 Ebay Inc. System and methods for automatic media population of a style presentation
US10157170B2 (en) 2008-07-03 2018-12-18 Ebay, Inc. System and methods for the segmentation of media
US10282391B2 (en) 2008-07-03 2019-05-07 Ebay Inc. Position editing tool of collage multi-media
US11017160B2 (en) * 2008-07-03 2021-05-25 Ebay Inc. Systems and methods for publishing and/or sharing media presentations over a network
US10706222B2 (en) 2008-07-03 2020-07-07 Ebay Inc. System and methods for multimedia “hot spot” enablement
US8756489B2 (en) * 2009-09-17 2014-06-17 Adobe Systems Incorporated Method and system for dynamic assembly of form fragments
US20140033010A1 (en) * 2009-09-17 2014-01-30 Adobe Systems Incorporated Method and system for dynamic assembly of form fragments
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US10296496B2 (en) * 2011-09-01 2019-05-21 Tokyo Institute Of Technology Data editing device and data editing method
US20140250124A1 (en) * 2011-09-01 2014-09-04 Tokyo Institute Of Technology Data editing device and data editing method
US9087064B2 (en) * 2011-10-27 2015-07-21 International Business Machines Corporation User-defined hierarchies in file system data sets
US11048672B2 (en) 2018-09-27 2021-06-29 International Business Machines Corporation Binary large object platform for interactively analyzing and editing structural metadata
US20210149376A1 (en) * 2019-11-18 2021-05-20 Rockwell Automation Technologies, Inc. Data models for defining data transmission workflow and facilitating data communication

Similar Documents

Publication Publication Date Title
US6769095B1 (en) Hierarchically structured control information editor
US7114149B2 (en) Navigation links in generated documentation
Mann Java Server Faces in Action
US7076766B2 (en) Software application development methods and framework
US6742175B1 (en) Component-based source code generator
US7320120B2 (en) Pluggable notations and semantics for visual modeling elements
Alderson Meta-CASE technology
US20060168557A1 (en) Methods and apparatus for implementing model-based software solution development and integrated change management
Milicev Automatic model transformations using extended UML object diagrams in modeling environments
US20040111702A1 (en) Method and apparatus for visual programming
US20020032900A1 (en) Methods and systems for generating source code for object oriented elements
US20050283758A1 (en) Bi-directional programming system/method for program development
Akehurst Model Translation: A UML-based specification technique and active implementation approach
CA2347191A1 (en) Component-based source code generator
English et al. An extensible, object-oriented system for active documents
Zhao et al. Pattern-based design evolution using graph transformation
Ermel Simulation and animation of visual languages based on typed algebraic graph transformation
Kalnins et al. Metamodel specialization for graphical language support
WO2001008002A2 (en) Hierarchically structured control information editor
Åkesson et al. Jatte: A tunable tree editor for integrated DSLs
Ko et al. Citrus: a language and toolkit for simplifying the creation of structured editors for code and data
Lions et al. Extending opentool/uml using metamodeling: An aspect oriented programming case study
Esbai et al. Model-driven transformation for gwt with approach by modeling: From uml model to mvp web applications
JP2001273125A (en) Method and system for automatically generating source program, and program recording medium therefor
KR100609240B1 (en) Method and apparatus for generating diagram modeling tools with user&#39;s customization requirements based on mof meta-models

Legal Events

Date Code Title Description
AS Assignment

Owner name: CODAGEN TECHNOLOGIES CORP., CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BRASSARD, MICHEL;SHINGAROV, BORIS;REEL/FRAME:011833/0975;SIGNING DATES FROM 20001214 TO 20001221

AS Assignment

Owner name: MANYETA INFORMATIQUE INC., CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GTI V INC.;REEL/FRAME:018700/0872

Effective date: 20061023

Owner name: GTI V INC., CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CODAGEN TECHNOLOGIES CORP.;REEL/FRAME:018700/0644

Effective date: 20060803

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
REIN Reinstatement after maintenance fee payment confirmed
FP Lapsed due to failure to pay maintenance fee

Effective date: 20120727

FEPP Fee payment procedure

Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PMFG); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

FEPP Fee payment procedure

Free format text: PETITION RELATED TO MAINTENANCE FEES FILED (ORIGINAL EVENT CODE: PMFP); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: AXURE SOFTWARE SOLUTIONS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MANYETA INFORMATIQUE INC.;REEL/FRAME:034074/0866

Effective date: 20140801

PRDP Patent reinstated due to the acceptance of a late maintenance fee

Effective date: 20141203

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: IRISE, CALIFORNIA

Free format text: NOTICE OF COVENANT NOT TO SUE;ASSIGNOR:AXURE SOFTWARE SOLUTIONS, INC.;REEL/FRAME:036114/0804

Effective date: 20150529

FPAY Fee payment

Year of fee payment: 12