Ingres Community Forums Login Register Ingres.com  

Ingres Community Wiki

Navigation
Learn About
Developing With
Ingres Talk
Information
Toolbox

OpenROAD Code Sprint UK Sep2009

From Ingres Community Wiki

Jump to: navigation, search

Contents

Code Sprint Event

Dates: September Monday 28 and Tuesday 29
Venue: Ingres office. Slough, UK
Numbers: 10 to 15
Pre requisites: Programming experience in OpenROAD and/or C. BYO laptop.
Cost: The event is free.
Contact: Paul White (Click here to send email)
Meals provided: Dinner Monday night, Lunch, Morning and Afternoon refreshments on both days.
Accommodation: See below
Transport: see below

AGENDA FOR CODE SPRINT and USER GROUP MEETING (including directions)

The agenda has been updated. 28 Sep 2009.
View Agenda


Day 1 is nearly over. Just got back from dinner - good food good wine good conversation.
Click here to see Pictures

Theme

To be confirmed but plan to have fun! Meet OpenROAD community members from around the world. Learn what it takes to get enhancements into the main code line: Specifications, Source Change Control, QA, Documentation and Programming! Get hands on assistance from OpenROAD architects and gain insight into the bug fixing process. Help bring some of the latest community developments into the enterprise GA release.

Your input will help accelerate OpenROAD into a fully open source product

User Group Meeting

On the Monday evening we are holding an informal Ingres / OpenROAD user group meeting. All are welcome. There will be some nifty demonstrations and an opportunity to play with new technology. Have your say in the future direction of OpenROAD. The presentations are not too technical and we think you will find the case studies interesting. If you have a suggestion for a topic or would like to make your own presentation please let us know. It's a good opportunity to meet your peers in the industry.

View Agenda

Date: Monday 28 September
Time: 6pm
Venue: Ingres office. Slough, UK
Numbers: If we fill the venue we may have to run break out sessions
Light refreshments will be provided.
Registration: Contact Sean Thrower or phone +44 (0) 18.8362.2464

Sponsorship

We are looking for sponsors to the event to help offset costs for this and future community events. Please contact me for more details if you would like to assist.

A huge thank you to goes to Ingres for providing the venue, meals and organising much of the infrastructure. Thank you to Peercore for covering the cost of refreshments.


Dinner event

We would like to hold a special dinner event on the Tuesday evening. Planning is still underway. Please let us know if you would like to attend. Costs are unknown at this stage, we are hoping to subsidise the cost with sponsorships.


How to get there

The code sprint is being held in the office of Ingres Europe Limited
215 Bath Rd, Slough, Berkshire, SL1 4AA, United Kingdom‎
Phone: +44 (0) 17.5355.9500

Gatwick airport. 55 min drive . 60GBP for taxi
Heathrow airport. 15 min drive. 25GBP for taxi
Taxi. online bookings
Rail. Plan your travel

  • Slough railway station is 7 min drive or 26 min walk from the office.
  • Heathrow T4 Leaves every 30 min. duration 38 min 1 change
  • Heathrow T123 infrequently. duration 58 min 1 change
  • Gatwick leaves every 15 min. duration 1:45 - 1:52. 2 changes


Accommodation

Most of our participants are staying here:

Express By Holiday Inn SLOUGH
New Station House
Mill Street
Slough, Buckinghamshire SL2 5DD
United Kingdom

The cost is around 45 GBP which includes buffet breakfast. This is the base rate for a room with 2 beds. Taxes included You’ll need to do a bit of surfing to get the best internet rate.


Links

Check out the results of previous code sprints here:

Wizards of Oz Tour 2008 Wiki

Wizards of Oz Tour 2008 code sprint. (great pics)

UK code sprint July 2008


Code Sprint Preparations

Hardware Requirements

If you are participating in the OpenROAD Code Sprint, you will need to bring your own laptop computer. We recommend the following minimum hardware:

  • Pentium 4 1.8 GHz or higher
  • 1 GB memory (2 recommended)
  • 500MB free disk space
  • 1 available USB 2.0 connector
  • Windows XP Professional, Windows 2003 Server or RedHat (or compatible) Linux

Software Requirements

You will be required to install VMWare Server 1.0.8 on your laptop for the duration of the code sprint. All development work done during the sprint will be done in preconfigured virtual machines. These VMs will be provided to each participant on a 60 GB USB drive which you will keep as one of your gifts from Ingres Corp. To save time at the sprint, you may pre-load VMWare on your machine by downloading it from the VMWare download site at here.

IMPORTANT: Download and install the 1.0.8 version of VMWare Server NOT the 2.0 version of the product!

Training Materials and other Resources

You may want to familiarise yourself with the OpenROAD Empire and Community Applications before arriving at the sprint. The following materials will help. Check back frequently as more materials will be added to the site as the event draws closer.

  • Working with OpenROAD Empire and the Community Applications is available in PDF format here. This presentation was prepared for the OpenROAD Wizards Of Oz 2008 Code Sprint particpants to familarize them with the VM that was provided. While this VM will be available we will be focusing on another technique for working with the code under an NDA.


Listed below are different project suggestions to be considered as candidates for the OpenROAD Development Sprints. This list is not meant to be the only choices, other ideas are certainly welcome. Feel free to add your sprint project idea to the list.

3GL Projects

Add Previous Value to

Description: Add the ability to keep previousValue. If you want to keep the previous value you will need save it in the entry event and update it in the exit event. You will need an extra local variable to hold the value. This could be provided by OpenROAD openROAD. When a field gains focus the current value is saved as Previous value. When the field looses focus the previous value is updated. This should work for scalar fields that have entry and exit events. But what about Radio fields. These fields can change value without gaining focus at least from a 4GL perspective. Previous value should work for EntryFields and subclasses. Previous value should work for ChoiceFields: and subclasses. Previous value should work for TreeViewField, This requires a new attribute on:

  • EntryField class
  • ChoiceField class.
  • TreeviewField class

Comment:

Submitted By: Kim Ginnerup

Maximized frames

Description: Add the ability to create fullscreen applications. The only way to do this today is dig into win32. This is not the right way for a 4GL developer.

lResult = SendMessageA(curframe.widgetId, 274, 61488, 0); // Set window Maximized

New value for WindowPlacement: WP_MAXIMIZED. No event or or anything else is needed as this is done on frame initialization. Setting isMaximizable = FALSE and isMinimizable = FALSE and WindowPlacement to WP_MAXIMIZED You have a locked fullscreen application. The problem is that WindowPlacement is a RW1 attribute, so it cannot be changed, but maybe this is not a problem. But if it is, it is another project.

Comment: This work along with the IsMaximized project was mostly completed at the UK Sprint 2010. It will be submitted into 5.1 and higher code lines in the near future.

SD Issue /Bug Number: SD 108955 / SIR 116519

Submitted By: Kim Ginnerup

Enhancement to the ARRAY .Find and .Sort Methods

Description: .Find Enhancement: Allow the specifying of multiple attributes to be searched for in the array. Frequently I need to find an entry in an array based on multiple attributes. Currently this cannot be done using the .Find method as it only supports 1 attribute & so I have to resort to an IF test inside a FOR or WHILE loop. This gets slow when it is having to be repeated within another FOR loop.

.Sort Enhancement: Allow an array to be sorted on an attribute of an object attribute. In my application company information is stored in a company userclass. This is used to create an attribute in another userclass-based array. In order to Sort the array by Company name, I had to process the array, copying the data into a "dummy" attribute at the array level before performing the sort. Ideally I'd like to be able to do something like:

MyArray.Sort (Source.CompanyName = AS_ASC, Component = AS_ASC); 

Comment:

Submitted By: Martin Bloomfield

Add the -l flag to the DocumentApp and DestroyApp Utilities

Description: In OR 2006 there exists a -l flag to the import and export utilities which operates on a set of files. This project will apply this same functionality to the documentapp and destroyapp utilites. Once this is accomplished the corresponding 4GL project can be implemented

Comment: This should be reasonably straightforward to implement as the code to accomplish this already exists in the import and export utilities.

Submitted By: Colin Hay


Complex Data Types Objects

Description: OpenROAD allows the calling of external API’s that can reside in dynamic link libraries on Windows platforms or shared libraries on Linux/UNIX platforms. Currently the feature is limited to API’s whose input parameters are simple scalar types. The supported data type mapping between OpenROAD and C/C++ are as follows:

  • Varchar <> char *
  • Integer <> int
  • Float <> float, double
  • Char <> char

Some external API’s have one or more input parameters that are complex data types. These represent memory storage blocks that must have a precise layout and can be linked together by references. In the C language these complex data types are structures. This project implements a new OpenROAD system class that allows the instantiation of a complex memory object such as an arbitrary C structure.

Goal: A reasonable goal is to develop a working prototype of this feature. Several Win32 API’s that require complex data types as input parameters called from a OpenROAD 4GL program would be a successful proof of concept.

Submitted By: Joseph Kronk

Trace Window Portlet

Description: The current trace window is a 3GL feature (disaster?) that can not be controlled by the 4GL application. The 3GL part of this project enables the 4GL application to receive trace information from the OpenROAD runtime. The 4GL part of this project is to enhance the IDE to use a portlet to display trace information.

Goal: TBD

Submitted By: Joseph Kronk

HashTable Class

Description: OpenROAD 4GL currently does not have a system class for storage of objects in a keyed memory table, which can be used for later quick lookup operations. Developers are therefore forced to (mis)use a 4GL ArrayObject and its Find() method, which is harder to implement and could have a huge performance impact. Some developers also use the ChoiceList for performance reasons. A HashTable class can be configured using a Setup(size, keytype, isunique) method with a configurable size and key type (e.g. varchar, integer, object) and an option if it's using unique keys. It also offers methods like: Clear(), Enter(key, elementobject), Find(key), FindAll(key), Remove(key).

Goal: A reasonable goal is to develop a working prototype of this feature. It can be used to improve the performance, e.g. within the AsoLib BPM implementation (switching contexts etc.).

Submitted By: Bodo Bergmann

FileObject Class

Description: OpenROAD 4GL currently does not have a system class that offers methods for reading and writing files, which leave the file open, e.g it's currently impossible to read in a large file (e.g. 2GB - which wouldn't fit in a StringObject) line by line. The StringObject methods WriteToFile() and AppendToFile() always open the file, then position within the file, write to it, then close it. A FileObject class will act as a wrapper to the C functions, so it will offer methods like Open(), Close(), Seek(), Read(), Write().

Goal: A reasonable goal is to develop a working prototype of this feature.

Submitted By: Bodo Bergmann

ObjectFactory Class

Description: OpenROAD 4GL currently does not have a system class that allows the creation of arbitrary objects from the varchar name of the class. For simple user or system class objects there is a workaround by getting the value from a DynExpr created from the string: classname+'.Create()'. But this has performance implications and limitations, e.g. it can't be used for creating an ARRAY of the given class. In addition we currently have no way to create an external object without using an external class library, but according to the registered name of the class, e.g. "Word.Application" (like in VB), which will create the object of the latest version installed on the current machine. Also, there should be away to get a list of installed versions before trying to create the instance. The ObjectFactory class would provide the following method CreateObject(classname, isArray, useRegisteredName).

Goal: A reasonable goal is to develop a working prototype of this feature.

Submitted By: Bodo Bergmann

FormatObject Class

Description: OpenROAD currently only allows formatted output of values by the use of an EntryField with FormatString/TextValue. Formatting is often required without the visual component (GUI), e.g. in an OpenROAD Server environment or when writing output to files or the DB. The FormatObject provides the formatting functionality of EntryFields without the GUI dependency and therefore is also a component to reduce the GUI (and therefore MainWin) dependency of OpenROAD Server applications. The class offers the attributes/methods required for formatting, e.g.: Datatype, TextValue, StringValue, FormatString, SetValue(), GetValue(), SetValueFromString(), GetValueAsString(). The implementation will mostly be a copy&paste from the EntryField code.

Goal: TBD

Submitted By: Bodo Bergmann

SysUtils Class

Description: You currently have to use "CALL SYSTEM" statements if you want to copy, rename or delete files on the harddisk. It would be nice to have a system class which implements these operations in an OS independent way with functions like "CopyFile", "RenameFile", "MoveFile" or "DeleteFile". We could also implement these functions into the "SessionObject" class, since a lot of similar functions are already in this class (e.g. "FileExists", "DirectoryExists", etc.). Here is a list of funtions that could added to improve the usability of OpenROAD (may be extended):

  • CopyFile(FileName = varchar(2000), NewFileName = varchar(2000))
  • DeleteFile(FileName = varchar(2000))
  • ExcludeTrailingPathDelimiter(FileName = varchar(2000))
  • FileAge(FileName = varchar(2000))
  • FormatStr(???)
  • GetTempDir()
  • GetTempFileName()
  • IncludeTrailingPathDelimiter()
  • MoveFile(FileName = varchar(2000), NewFileName = varchar(2000))
  • RemoveDir(Directory = varchar(2000))
  • StringReplace(S = varchar(2000), OldPattern = varchar(256), NewPattern = varchar(256))
  • StrPos(S = varchar(2000), SubStr = varchar(256))
  • TouchFile(FileName = varchar(2000))
  • WrapText(S = varchar(2000), BreakStr = varchar(8), BreakChars = varchar(8), MinLength = integer, MaxLength integer)
  • ChangeFileAttribute( FileName = varchar(2000), Attribute = integer)
  Description: Attribute can be:  READONLY, READWRITE, HIDDEN, SYSTEM

Goal: TBD

Submitted By: René Slowenski, Colin Hay

Code-hiding

Description: When components are developed, much of the code is typically scaffolding, performing programmer-validity-checks, reporting, intimate commentary that will all disappear in the production system, and which during development makes the code hard to read because you cannot visually differentiate between programmer-scaffolding and enduser-policing. It usually gets deleted when the component is nearing production (or even code review), which is most unfortunate given the testing information and capability it contains.

We could nominate a non-code character (¶, for example) that the compiler ignores (if at column 1), but uses to determine if that line should be included in the compilation (.CodeHiding=CH_INCLUDE), or ignored (.CodeHiding=CH_HIDE). The character would be at the start of the line (like the # is now) - when editing the code caused it to inset, it could be made to disappear (or to be the programmer’s responsibility to cleanup).

Advantages:

  • developers and maintainers would have the scaffolding available to them at the click of a switch whenever they needed to reopen a production component to work on a bug or enhancement.
  • Information identifying the likely weaknesses and justifications of any section of code would not be lost
  • Developers could identify and eliminate unintended dependencies of the production code on the scaffolding before they deleted it, saved, tested, screamed, and threw themselves off the nearest bridge (a daily occurrence here)

... big savings in development & maintenance costs, quality and sanity.

Goal: A working prototype.

Submitted By: Sean Thrower

FocusBehavior Improvement

Description: FocusBehavior is triggered only by click events, and this creates scenarios where changes are lost, and workarounds are incomplete at best and often complex. Focusbehavior processing is important to events such as FrameDeactivate and Terminate (needed for eclient), as well as Properties and ClickPoint. We could implement a focusbehavior attribute for frameexec, to manage responses to FrameDeactivate and Terminate. Immediate benefit – the properties sheet (and eclient) would stop losing input values ...

Goal: A full working implementation of the frameexec handling may be achievable.

Submitted By: Sean Thrower

Regular Expression Class

Description: Potential New or Modified Exisiting OpenROAD System Class. Support for regular expressions -- there are lots of regexp libraries out there that could be wrapped into a system class or incorporated into string support somehow.

Goal: TBD

Submitted By: Roger Whitcomb

Mathematical/Computational functions

Description: Support for more mathematical and computational functions: trigonometry, hyperbolics, bessel and J functions, etc., etc. New OpenROAD System Class –or- Functions.

Goal: TBD

Submitted By: Roger Whitcomb

Support New Bitmap Formats

Description: Modifications to the BitmapObject System Class to add support for more image and/or vector graphic formats (PNG, SVG come to mind) for images

Goal: TBD

Submitted By: Roger Whitcomb

Compression Class

Description: New OpenROAD System Class to add support for compression (i.e., wrapping ZLIB or something like that) to be able to create/read .ZIP, .TAR, .GZ, .JAR, .WAR, etc. format files. A follow-on from this could be importing/exporting apps from/to .ZIP format (for instance)

Goal: TBD

Submitted By: Roger Whitcomb

FTP Class

Description: An easy way to send and receive files using ftp protocol.

Goal: TBD

Submitted By: Kim Ginnerup

MAIL Class

Description: Provide an easy way to send and receive email.

Goal: TBD

Submitted By: Kim Ginnerup

HTTP Class

Description: An easy way to send and receive files using http protocol.

Goal: TBD

Submitted By: Kim Ginnerup

Localization

Description: In a non English speaking country you cannot use any of the built in popups because you cannot translate them.

Goal: TBD

Submitted By: Kim Ginnerup

DateObject Enhancement

Description: A lot of new features would be great here such as GetISOWeek(), GetYear(), month(), day(), dow(), quarter(). Also GetDateAsString() to return a date in a fixed format string that is not dependent on II_DATE_FORMAT and getXMLString() to return the date in standard xml notation. In general most if not all Ingres Date functions should also be available in the DateObject class

Goal: TBD

Submitted By: Kim Ginnerup

FloatObject Enhancement

Description: Have getString return a float in a string that is not dependent on II_DECIMAL

Goal: TBD

Submitted By: Kim Ginnerup

Object Class Enhancement

Description: In general a toString type of function on the Object class would be a good thing to have, and would make it easier to make a persistence mechanism in OpenROAD

Goal: TBD

Submitted By: Kim Ginnerup

OptionField Button Enhancement

Description: You only have limited control on the visual aspects of an OptionField. I would like to add an attribute that controls the visibility of the OptionField dropdown button. It should be possible to make the button invisible. This way you have an excellent and simple way to show foreignkeys as readonly entryfield style fields. I suggest that we add a new attribute. "Buttonbehavior". The attribute can take the following values:

  • OB_ALLWAYS: (default) this is the same behavior as today
  • OB_FOCUS: The button becomes visible when the OptionField gains focus
  • OB_INVISIBLE: The button is invisible

The attribute should be available from the Property inspector and should be changeable at runtime

Goal: TBD

Submitted By: Kim Ginnerup

OptionField outline Enhancement

Description: You only have limited control on the visual aspects of an OptionField. I would like to enhance the outlineStyle so it works as expected. Today OS_SOLID has no or limited effect on the outline. An OpenROAD OptionField always has a 3D outline. OS SOLID should work the same way as it does for Entryfields. By implementing OS_SOLID for OptionFields we bring that fieldtype in line with EntryFields outline.

Goal: TBD

Submitted By: Kim Ginnerup

OptionField Button image

Description: You only have limited control on the visual aspects of an OptionField. The OptionField drop down button image is fixed size. I would like to add an attribute that controls the image of the button. This will make it possible to give the OptionField a more modern look and adds the ability to change the size of the image. Combining this with the OptionField outline Enhancement will make it possible to make more modern and Vista like OptionFields

Goal: TBD

Submitted By: Kim Ginnerup

Add a hook to allow Ctrl + a keyboard character to asynchronously trigger internal 3GL actions as well as 4GL activations

Description: Add the ability to trap keyboard input, such as CTRL+C, and trigger either a runtime related action ( such as breaking the 4GL interpreter out of an eternal loop ) or an application-specfic 4GL activation.

Comment: (Don Criley) A 3GL/4GL prototype is underway.

Goal: TBD

Submitted By: Don Criley

Add IsMaximized Attribute to FrameExec

Description: There is current no way to determine if an OpenROAD frame is Maximized. There is an IsMaximizable attribute that controls whether or not the Maximized button is displayed on the frame. When this button is clicked and the frame is Maximized. It would be nice if a TRUE/FALSE attribute could get set. Currently, when a frame is maximized a WindowResized event is triggered and there is no way to determine if this event is due to the frame being maximized or simply resized. If an attribute or a ResonCode could be examined it would make it easier to alter logic in the event block. This is probably preferable to a new WindowMaximized event to preserve backwards compatibility and prevent the firing of two events.

Comment: This work along with the IsMaximized project was mostly completed at the UK Sprint 2010. It will be submitted into 5.1 and higher code lines in the near future.

Submitted By: John Mahony

Debug Tracing from the 4GL. - Enabled by three new attributes to SessionObject

Description: Many have requested the ability to trace the line number at runtime to help debugging. When OpenROAD crashes it dumps the stack of the 4GL at the moment of the crash. It would be nice if this could also done in the 4GL code, allowing programmers to add more useful debugging trace to their code in an easier way. For this 3 new attributes will be added:

  • LineNumber: The processed script line number of the frame, procedure or method being currently executed.

Datatype:Integer

4GL Access: R

  • Name: The name of the of the frame, procedure or method being currently executed.

Datatype:Varchar

4GL Access: R

  • LocalScope: The scope of the frame, procedure or method being currently executed.

Datatype:Scope

4GL Access: R

Project Home: More details available at Ingres OpenROAD Projects/Debug Tracing From 4GL.

Comment: (Brigitte Duplenne) Code submitted. Will be integrated in OR 5.1

Goal: Done

Submitted By: Brigitte Duplenne

Add ColumnWidthCompressed Attribute to RadioField

Description: The width of an RadioField's item gets determined by the longest item of the RadioField's choicelist. When setting a RadioField's Orientation to FO_HORIZONTAL, this may lead to very large gaps between the single items. Add a new attribute ColumnWidthCompressed to RadioField which determines how to display width of a RadioField when the Orientation attribute is set to FO_HORIZONTAL. If ColumnWidthCompressed is set to FALSE, OpenROAD sets the horizontal width of each RadioField column to the width of the longest column. If set to TRUE, OpenROAD trims blank space from the end of columns that are shorter than the longest column. Its default value is FALSE.

Project Home: More details available at [[]].

Comment: (Yunlong Zhao) Code submitted during Code Sprint Manila and has been integrated into OR 5.1 and later code lines

Goal: Done

Submitted By: Yunlong Zhao

State of Scrollbar in multiline entryfields

Description: Customer wants to be able to inquire about the state of the scrollbar of a multiline entryfield. If the number of lines of the field gets larger than the number of lines displayed, the scrollbar changes from inactive (dimmed) to active and can be scrolled. Customer wants to inquire about this state (active or inactive). It would also be good to know if the text to display is fully displayed ( for example if you deactivated the scrollbar). Reason for that request: Customer's software makes use of a touchsecreen and does not want to let the user click with the finger on the scrollbar but wants to use other routines.

Comment: A ReadOnly attribute such as ScrollbarActive (T/F) will need to be added to the EntryField class so that 4GL developers can access it.

Goal: Could be implenmnted in Sprint

SD Issue/Bug Number: SD 123702/SIR 119514

Submitted By: John Mahony per customer request

Change Error Message when unable to open log file

Description: The message you get when trying to run a w4gldev or w4glrun job (typically on unix) with a -L pointing to a file you do not have permission to overwrite is: "Warning Unable to open the w4gl log file. Do you want to continue? Yes/No? [No]
Isn't this a hangover from Windows4GL days - shouldn't it be 'the OpenROAD log file' ?

Comment: In scanning the code it appears as if this is written from the sipinit.c file. The name of the logfile is now available via the environmental variable II_W4GL_LOGFILE. It would be nice to display the name of the file in the error message.

Goal:

SD Issue/Bug Number: SD 138621 /SIR 119514

Submitted By: John Mahony per customer request

The CurSession.GetEnv() method should be able to return more than 256 characters

Description: The method getenv() of SessionObject can only return 256 characters according to the documentation:
System Reference Summary, Page 2-374: GetEnv (name = varchar(256)).
This is for example needed when working with the II_ECLIENT_URL variable which can easily contain more than 256 characters when passing parameters.

Comment:

Goal:

SD Issue/Bug Number: SD 115340 /SIR 117651

Submitted By: John Mahony per Kim Ginnerup

4GL Projects

Virtual Key Constants

Description: The OpenROAD Language Reference (Appendix D) lists a number of constants for Virtual Keys originally provided in Microsoft's WM_KEYDOWN documentation. These have never been implemented in OpenROAD proper so KeyPress events et al. have to resort to using magic numbers.

Comment: Reading materials on the subject includes WM_KEYDOWN documentation and the article VK_A is not always A.

Submitted By: Roy Deal Simon

Add the -l option to the DocumentApp and DestroyApp

Description: In OpenROAD 2006 there exists a -l option to the import and export feature which operates on a set of files. This project will apply this same functionality to the documentapp and destroyapp utilites.

Comment: This should be reasonably straightforward to implement as the code to accomplish this already exists in Workbench for the import and export feature.

Submitted By: Colin Hay

OpenROAD IDE Resizing

Description: OpenROAD 2006 Workbench is currently a fixed size window. This project implements resizing logic in the IDE to allow the top level frame to be resizable. Portlets contained by the top level frame will react proportionally to the resize action

Goal: TBD

SD Issue/Bug Number: SD 123157, 126113, 142712, 143019

Submitted By: Joseph Kronk

Find Component and Find Text

Description: Add a find component function to the IDE that will search across all applications in that database. Also, add a find text string function to find any text in any component for the currently connected database.

Comment: (Michael Singman-Aste) A prototype has already been written. It both searches for a component name across applications AND will find specified text across any component in the database. The problem with just using "like" is that text is broken up at the end of rows in ii_srcobj_encoded. The prototype concatenates the rows for a given entity and then performs the search.

Goal: TBD

Submitted By: Michael Singman-Aste for Adrian Williamson

Dynamic 'Call' Statements

Description: We can already perform the following in OpenROAD lv_framename = 'frFred'; callframe :lv_framename ( lv_message = 'hello', li_counter=1); The suggestion is that the entire callframe statement can be dynamically built e.g. lv_framename = 'frFred (' + lv_param_name1 + ' = ' + lv_param_value1 + ',' + lv_param_name2' + '=' + varchar(li_counter_value) + ')'; callframe :lv_framename;

Why: If you have a situation where it's not certain which option a user will choose, but when they do make that choice you want to invoke a call/goto/open frame statment. The frame identified to call has its parameter list held on the database or in a reference object somewhere. You can build the entire CallFrame statement dynamically and open the frame.

Comment: Without this type of facility some mechanisum is required to 'carry' the parameters across frames in a generic class e.g ParameterCarrier and then provide code into the initialise block of each frame to populate the real variables with the values passed across in the 'ParameterCarrier' class.

Goal: Working Prototype

Submitted By: Matt Rendell For Dave Clark

OpenROAD Performance Statistics

Description: SPOTRACE.LOG for 'normal' OpenROAD applications. The information that comes from application server in the SPOTRACE.LOG file is excellent and invaluable when you are trying to tune the application server. Can we have the same type of facility for 'normal' OpenROAD applications? The output will show how much time each Initialise, Procedure call (local and 4gl) and Method invocation takes to complete (from begin to end).

Comment: The information gained from this output would allow application teams to identify slow running areas of their application. As with OpenROAD discovery the information must be keyed on application name, component name, invocation type e.g. Callproc. Data from this process will be in a format that lends itself to being loaded into a database. Queries on the data can be performed and graphical output generated if necessary. Regular health checks on applications will avert performance degradation and perhaps outage.

Goal: This project was started at the UK SPrint 2010 and is currently still in progress.

Submitted By: Matt Rendell

OpenROAD Discovery

Description: If you have ever seen the discovery report generated by phase 1 of the Transforge process this is what this is all about but for OpenROAD and not ABF. A facility to output to CSV file(s) or XML file(s) key information about about the application content. The use of SQL (SELECT, UPDATE, DELETE broken down by column, from, where, order by etc), frame calls with parameters, procedure calls with parameters, method invocations with parameters, identify where userobjects are declared, comment blocks at the top of components. Each record must be keyed on application name, component name, event block type event block name.

Comment: This type of feedback would give you a true picture about how the OpenROAD application has been engineered. Especially helpful with legacy applications where the knowledge left the building many moons ago. I have listed just a few thoughts I had below. I'm not sure this is one for the code sprint, but it would be good to get some feedback on the idea.

  1. Comprehensive application documentation
  2. The ability to perform accurate impact analysis on your precious application before implementing a table changes or application changes.
  3. Understand the testing requirement as a result of a change, create comprehensive test plans.
  4. Identify how much component reuse is being employed across the application.
  5. New starters to your organisation will see a 'picture' about the applications structure
  6. Ability to identify a 'ROADMap' of the application e.g. this frame calls this frame
  7. Monitor the amount of SQL within the application
  8. Identify if SQL is being coded into frames or into UserObjects
  9. For the first time, truely understand the size of application you are maintaining
  10. Identify the different component types used to engineer the application e.g. 3GL, ActiveX
  11. The winner of the new competition 'Design a great OR GUI for all this information' gets a rare signed photo of Joe Kronk :)

Goal: Ambitious? Something to think about

Submitted By: Matt Rendell

Show values of highlighted debugger variables

Description: In the debugger, if the mouse is hovered over highlighted (doubleclicked) text for more than 1 second, display the value of the variable or expression highlighted.

Comment: Should be reasonably straightforward. The main element is a 4GL implementation with userevent timer, to parse and evaluate the highlighted text, compute its xleft ytop location, and visualize it via tooltiptext. The only issue is the mouse position, which would require either a 3GL change, or the use of the GetCursorPos Windows API call in the 4GL.

Goal: A majority of this work was completed at the UK Sprint 2010.

Submitted By: Sean Thrower

Property Inspector Always on Top

Description: It would be nice to have an option to have the property inspector window always on top of the other windows (like with the menu window).

Comment: Add an option to the ce_toolbar component that controls whether the property inspector is opened with the IsTopMost attribute turned on. It is requested that this be done in a fashion similar to how the frame editor menu is has an Options-> This Menu Always on Pop option. An additional option could be added to control the "Property Inspector Always on Top" as well as the "Field Tree always on Top". These setting should be retained by writing them to the preferences file. When the frame editor is started the value should be read from the preferences file.

Goal: This function could be completely implemented in a Sprint

SD Issue/Bug Number: SD 123158/SIR 119453

Submitted By: John Mahony per Customer Request

Data in ClassBrowser is not Sortable

Description: Add the ability to sort the Attributes and Methods ListViewFields on the Class Browser Portlet of OpenROAD Workbench.

Comment: Add On ChildHeaderClick events for the methods and attributes listviewfield in aw_classworkbench06. These events should control either the clienttext or clientdata setting for the header buttons to keep track of the sort order (ascending or descending). The data in the listviewfields should be temporarily placed into a sortable array (perhaps an arrary of choiceitems) , sorted based on the column clicked and order, then repopulated into the listviewfield. The last saved sortable column and order should be saved to the preferences file so that it can be retained when the class browser portlet is later activated. Both listviewfields should default to ascending sort order on the name column.

Goal: This function was completed at the UK Sprint 2010 and has been cross integrated into SP1 and higher code lines.

SD Issue/Bug Number: SD 144421/SIR 123842

Submitted By: John Mahony per Customer Request

Double Clicking on a Connection Profile

Description: A doubleclick of a profile on the Connect tab of workbench should connect to that profile and automatically open the Develop Tab.

Comment: This should be pretty straightforward. Enhance the double-click events in the aw_profileedit06, aw_profilerecent06 and aw_profilecurrent06 frame so that they also send an ActivatePage event to the IDE with "develop" as the messagevarchar. The ActivatePage event in the starting_ide will parse a comma separated list of tabs in the MessageVarchar to activate any number of level of tab pages.

Notes: There is a 3GL usability issue with double click events between portlets having to do with activating the portlet. This is similar to the behavior you see between non portlet frames that are opened with the openframe statement.

Goal: This function was completed at the UK Sprint 2010 and has been cross integrated into SP1 and higher code lines.

SD Issue/Bug Number: SD 111569/SIR 117049

Submitted By: John Mahony per Customer Request

Erroneous validation popup when selecting Edit button from Connection Profile Database Select dialog

Description: When clicking on the edit button from the Connection Profile Assistant when selecting a database, an erroneous warning message is presented due to a validation check. This validation check should not be required. The data that has already been selected/entered in the wizard should be added to the Connection Details portlet for editing. Any data entered in the existing dialog should be retained, if no data has been entered it should be ignored .

Comment: This should be pretty straightforward. The WizardDialog frame needs to be edited to defer the field validation by sending the validate = FALSE parameter to the ProcessData procedure when the options button is selected.

Goal: This function could be completely implemented in a Sprint

SD Issue/Bug Number: SD 142657/SIR 123843

Submitted By: John Mahony per Customer Request

Add an Appflag to automatically load a debug config file

Description: We want to run the workbench with All Errors on permanently to trap all trace window errors - such as row out of range I can save the settings to a debug config file using Run / Setup / Write to file, Is there a 'hidden' flag to automatically load this file every time the workbench starts so developers don't have to keep remembering to do so ?

Comment: Add an application Flag such as "DebugFile=" that will take a full file path or filename in conjuction with II_CONFIG and load the debug config file when workbench is started as if the Run->Setup->Read from File has been selected from the Debug tab.

Goal:

SD Issue/Bug Number: SD 143545/SIR 123853

Submitted By: John Mahony per Customer Request

Provide the ability to define global error break conditions in Workbench

Description: The problem is that the settings on the Other tab are application specific despite their 'global' nature. The Setting Error Break Conditions section in Chapter 18 of the Workbench User Guide is not too clear on this. It means that I have to set the 'global' settings for all 6 applications to be sure that all errors will result in a debug break. The idea of having a global setting as well as a individual setting that can be overwritten on specific application could be a good thing.

Comment: Provide the capability to the developer to set any break condition that is not application specific (suc as those on the others tab) globally. This could be done via the tools dialog or perhaps via a Save setting globally option somewhere on the debug tab. The values for these setting should be saved to the preferences file where they can be read in at startup.

Goal: Unkown

SD Issue/Bug Number: SD 143512/SIR 123854

Submitted By: John Mahony per Customer Request

Set focus on next or previous row in class editor after deleting an attribute or method

Description: Deleting an attribute from the class editor causes the focus to always go to the top of the list which is very annoying Some of our classes have more than a 150 attributes and I have been going through removing unused attributes (dating from out TransForge process). Each time I delete one I have to scroll back down to where I was prior before deleting further attributes. Can this 'tablefield' not work the same way as the Component list in the workbench and the focus return on the previous or next attribute in the list ?

Comment: See logic in components list of aw_appworkbench06.

Goal: This code was completed at the UK Spint 2010 and has been cross integrated into SP1 and higher code lines.

SD Issue/Bug Number: SD 142635/SIR 123855

Submitted By: John Mahony per Customer Request

Add first character find to component optionfield on Break Conditions frame

Description: It would be nice if the Component optionfield, on the Break Conditions frame had the auto find feature enabled. We have just flattened our application into one 'level' and have over 7000 components to choose from, hence the auto find would be a great help!

Comment: The components optionfield appears to be a classic only feature which will not be modifiable at a Sprint since Classic is disabled in the empire based code-lines. An additional option to add a full character find capabilities on the Debug Source Components Tree might suffice.

Goal:

SD Issue/Bug Number: SD 142323 & 112018/SIR

Submitted By: John Mahony per Customer Request

Modify Property Changer Tool to operate on a single component within one application

Description: I would like to ask is there a possibility to modify the PropertyChanger tool to apply it to single components within one application rather than whole application?

Comment:

Goal:

SD Issue/Bug Number: SD 139096/SIR

Submitted By: John Mahony per Customer Request

Add full Find option to Field Tree Window

Description: Customer’s developers makes extensive use of the Field Tree when working on frames. Many of these frames have a large number of fields. Their work would be a lot easier if the Field Tree had a “find” facility, rather than just typing characters to jump to the next field starting with them.

Comment: Provide a find option that will popup a dialog for user text entry. The tree will then be traversed node at a time until a match is found.

Notes: This may be a good candidate to wait until 5.2 where the new tree enhancements are available.

Goal: This could be completed in a Sprint project.

SD Issue/Bug Number: SD 133316/SIR 123848

Submitted By: John Mahony per Customer Request

Insert User defined skeleteton method when a new method is created

Description: - When creating a method for a user class in the 2006 Workbench, it would be usefull if the skeleton of the method is created automatically.

Comment: There is currently an undocumented way to do this by adding a "_methodstub" include script to your application. The class editor will try an fetch this component and append it to the end of the script. This mechanism is used in the mastdetl application. It is flawed in that it will append to the end of the script so if there is a local procedure defined it will not compile. There is also no mechanism to remove the method when it is deleted. However copy/paste and duplicate work. An alternate approach would be to provide a dialog from the IDE where the user can enter a skeleton method script. This script sould be added to the preferences file and used in place of the _methodstub include script.

Goal: The majority of this work was completed at the UK Sprint 2010. Once Split/Join is added to stringobject it will be submitted and cross integrated into 5.1 and higher code lines.

SD Issue/Bug Number: SD 111568/SIR 69558 & Bug 110769

Submitted By: John Mahony per Customer Request

Change TextValue to StringValue in Property Inspector for trim fields

Description: The property Inspector should be modified for Boxtrim and FreeTrim fields to provide for the input of the StringValue and not the TextValue. The TextValue is currently limited to 256 characters so large strings cannot be added via the Frame Editor. This requires them to be loaded programmatically.

Comment: Will need to modify the fe_pi_get_field_attributes.exp to replace the textvalue with a new stringvalue property for trim fields. WIll need to clone existing logic for varchar data entry to deal with stringobjects. May or may not need 3GL support.

Goal: This was completed at the UK Sprint 2010 and has been cross integrated into the 5.1 and higher code lines.

SD Issue/Bug Number: SD 144829/SIR 123801

Submitted By: John Mahony per Customer Request

Place popup to preventing the selection of a different profile when running Workbench from Workbench

Description: There is currently a limitation when running The Workbench application from the development environment. You are only allowed to connect to the same profile that you are connected do in your IDE. This limitation is due to system session restraints. Failure to comply will either give you the impression that you are connected to the selected profile or result in a creash of the workbench. A message popup preventing the user from doing this is desired.

Comment: Need to figure out how to trap the fact that Workbench is being run from the Development enviornment and prevent the developer from trying to connect to a different profile

Goal: Unknown

SD Issue/Bug Number: SD 144830/SIR 123802

Submitted By: John Mahony per Customer Request

Add BgColor to Property Inspector for Tab Folders

Description: The workbench Property Inspector does not list BgColor as an attribute for tabfolders. This is required to support FP_CLEAR tab pages and tab folders where the BgColor of the Tab Folder is projected through to the tab page or tab bar when FP_CLEAR is used.

Comment: Two SIRS have been opened for this. 123803 is 4GL in nature and it involves adding the BgColor property to appear in the property inspector. SIR 123804 is 3GL in nature and involves fixing painting/refresh issues on Tab Folder fields in the frame editor when using the Tab Folders BgColor attribute in conjunction with FP_CLEAR tab pages and tab bars.

Goal: SIR 123803 was completed at UK Sprint 2010 and has been subsequently cross integrated in all SP1 and higher code lines.. SIR 123804 is not so trivial and has not been addressed

SD Issue/Bug Number: SD 140953/SIRS 123803 & 123804

Submitted By: John Mahony per Customer Request

Provide the ability to speicfy an alternate preferences file or folder location via an appflag when Workbench is started

Description: Workbench uses the II_CONFIG environment variable or the II_SYSTEM\ingres\files directory in conjuction with the CurSession.UserName for the preference file when workbench is started. This makes it difficult to run multiple version of Workebnch from the same account in the same installation using a different preferences file.

Comment: This becomes a necessity as we delve into fused version of Workbench

Goal: Unknown

SD Issue/Bug Number: SIR 123911

Submitted By: John Mahony per Durwin Wright

Personal tools
© 2009 Ingres Corporation. All Rights Reserved