Object Manager as an "Open Source" Project

Hi everyone, NEW - A WORD DOCUMENT HAS BEEN SUBMITTED TO THE DOWNLOAD AREA I have been working on an object management development tool on and off for about a year. I call it Object manager. I have been using it productively in my work for the last 8 months and have been enhancing it as I go. I would like to offer it to everyone as a group project. Currently the object IDs are in the 87500 range, so only developer licenses could have access. Maybe this can be changed soon with some add-on range objects. The project touches these major areas so far: Object History with restoration Projects with Objects CodeSafe - an automatic object backup feature Text Compare - using a modified version of the compare tool Enhance Object Import/Export using a new file format .vso (very silly object) Multi user Object Locks Upgrades Object Date/Time Compare It is a very useful tool as it is, but I think if we all used our heads and skills together it could be fantastic and increase everyone’s productivity. I could not get the attachment to work so any one who would like a word doc with screenshots please email me. I would be glad to post and/or email the objects to anyone who is interested. If anyone is interested in working on this project, please email me and we can get this organized and going. Steve Here is the contents of the word document without the screen shots Object Manager (OM) A development tool for Navision The Object Manager’s main form duplicates most of the functionality of the Object Designer and adds significant productivity enhancements through its subsystems. All OM data is shared across companies. Objects IDs are currently in the 87500 range. Highlights • Object History • Projects • CodeSafe • Enhanced Object Import/Export • Text Compare • Object Locks • OM Main Form o Features #61607; An alternate view of the Object Table. #61607; An enhanced version of the Object Designer form. #61607; This form is used 90+ % of the time instead of the Object Designer. #61607; This form duplicates most of the functionality of the Object Designer. #61607; The Object Designer needs to be opened for the duplicate functionality to work. The Object Designer is usually moved to the far bottom of the main Navision window. #61607; The duplicated Object Designer functionality is based on SendKeys automation. Uses ‘Windows Script Host Object Model’.WshShell #61607; Uses a custom automation.dll that checks to be sure that the Object Designer is opened before SendKeys is called. #61607; Can write your version tags to selected objects #61607; Can toggle the modified flag on selected objects #61607; Can be reduced to the OM Toolbar o Benefits #61607; Allows all the other OM functionality with only a little overhead. #61607; Customizable (if you don’t like how it looks or works – change it!) • OM Toolbar o Features #61607; OM reduces to a toolbar at the top of the screen that leaves some of the main functionality still accessible, but greatly reduces the space required. #61607; The toolbar is opened automatically when a company is opened. #61607; The toolbar expands to the full OM form by mouse click or keyboard entry. o Benefits #61607; Takes up little desktop real estate. Main Subsystem Features and Benefits 1) Object History (in Daily use) Tied for third most used functionality a) Features i) Before any modifications are done a copy of all the existing objects is created in History and marked as the Baseline. ii) A copy of all objects is kept in the History table. iii) Objects can be restored from History to either the original ID or to a user defined restoration range ID or to an entered ID. iv) Objects in History can be text compared to other versions (Live, CodeSafe, and Ext. Text). v) Objects in History can be exported as .vso files. vi) A new Baseline can be created at any time. vii) If you forget to create a baseline at the start you can import a baseline history at any time. viii) History can be consolidated into just the baseline and the most current version of each object ix) History can be updated at any time. x) History can be automatically updated when a DB is opened (a user option) xi) History can be used to evaluate how an object has changed since the baseline or any other point in history. b) Benefits i) Safety – Object versions are saved automatically and restorable as needed. ii) Speed - Don’t have to export fobs to save versions before doing changes or importing new objects. iii) Convenience- Don’t have to open another DB import the saved fob, open it copy and paste or export as text, import into compare tool, export the current object as text, import it into compare tool and then compare. Instead click compare live to… choose the historic object, export it, export your live object and hit the compare button. iv) Speed- Don’t have to copy objects to save current version – it is automatically saved. 2) Projects (in Daily use) - My most used functionality a) Features i) Projects can be created and objects can be added to projects ii) The OM main form can be filtered on the objects that are part of the selected project. iii) Objects can be imported and exported by project iv) OM can be set to open on a specific project each time the DB is opened or to open on the last project you were working on. v) Objects can also be added to a project as a reference. As an example, the Item Jnl.-Post Line codeunit is not part of your project (i.e. it will not be modified) but you need to be able to refer to it to check function calls, etc. A reference allows an object to be included in your project’s filtering for easy access without being part of your project. ( a reference’s name is RED) A reference can be displayed or not. vi) Can view a list of all the Projects that use an object. vii) Can dataport a project and its object list and import the file into a new DB and the project is already setup in the new DB. viii) Records the date/time of an object when it is added to the project. ix) Project Breakpoints (still in Alpha) b) Benefits i) Save Time - Don’t have to waste time scrolling up and down looking for objects you are working on. ii) Limit Aggravation- Don’t have to use Mark to filter your objects and don’t loose the Mark when Object Designer is closed. iii) Speed - Can easily flip back and forth between your projects iv) Can easily check the objects to be sure they have been versioned properly and you haven’t missed anything v) Can easily export the objects that were modified for the project. vi) Can see if objects are being used in other projects to help guard against conflicts. 3) Import/Export - uses an OM Import Worksheet similar to the standard Import Worksheet. (in Daily use) Tied for third most used functionality a) Features i) Objects are imported and exported in a .vso file format. ii) .vso files know what DB they were exported from when they were exported and who exported them iii) .vso file objects know what project, if any, they belong to. iv) .vso objects know what the previous time/date version they were based on v) On import vso objects can do everything a fob object can do plus: (1) The object name can be changed before importing.(you are warned of name conflicts before importing) (2) The object can be redirected to a different ID. (3) The object can be added to a project on import. (4) The object can be text compared to other versions (Live, CodeSafe, History, Ext. Text) before importing. (5) The current Live object and the imported object are automatically added to History on import. b) Benefits i) Safety – Can see the object before importing it ii) Safety – Can text compare the object before importing. iii) Convenience – rename an object so you can still import it iv) Convenience – import an object to a user specified ID for analysis without writing over the existing object or having to import it into another DB. 4) CodeSafe (in Daily use) a) Features i) The current version of the object is automatically copied to CodeSafe (if it is not already in History or CodeSafe) when the OM Design button is used. ii) Provides backup of the object just prior to you changes iii) Can be text compared to the live object. iv) Can be restored to its original ID or to a user defined Restoration Range ID and then opened and copied and pasted. b) Benefits i) Safety – the last version of the object is always available to be restored or viewed ii) Convenience – Don’t have to export or copy the existing version before modifying it. iii) Speed – CodeSafe is automatic, you don’t have to think about it. iv) Can have a version for every time the object was changed, no matter how small. v) Works automatically and unnoticed in the background. 5) Multi-User Setup (in Daily use) a) Features i) Each User has a setup form where some OM Features and looks can be individualized. ii) Individual user IDs are required for this feature. iii) More customizable Features are being added b) Benefits i) Ease of use – Set it up your way 6) Text Compare (in Daily use) My second most used functionality a) Features i) Uses the existing Navision Compare tool objects. ii) Objects can be compared from these sources - History, Live, CodeSafe, Import, and ext. Text in most combinations. iii) Uses SendKeys automation to export the selected objects as text and then automatically imports the text files and runs the compare tool and launches the a modified compare form for viewing. iv) The complete Compare/Merge tool functionality is available. b) Benefits i) Convenience – The compare tool is right at your finger tips and easy to use. ii) Safety – because it is so convenient you are more likely to use it for a quick check on an object before doing something dangerous. 7) Fob CheckIn (in Daily use) (An early feature that needs rework and improvement) a) Features i) Adds descriptions of the objects in the fob to an import history table (the blob is not saved here) ii) Moves the fob to a user specified folder iii) The objects in the fob can be added to the current project’s object list. iv) Update objects in the fob to History (in Alpha) b) Benefits i) Convenience – fobs are automatically organized in one folder ii) Traceability – A history of where a fob came from 8) Object Date/Time Compare (in Advanced Beta) a) Features i) .fob objects can be compared with the Live objects and a report generated that shows what objects do not match in Date and Time. ii) Can answer the question “Is this DB’s objects (as a fob) in sync with my DB’s objects as far as Date and Time?” iii) Can give you a quick check on what needs attention in an upgrade by comparing the DBs baseline objects with the new version objects and the custom modified objects. b) Benefits i) Speed – quick way to check DB synchronicity ii) Convenience – don’t have to export to excel 9) Multi-User\Server (Object Locks) (still in Beta) a) Features i) An object is locked when a user opens the object using the OM Design button and is released when the object’s design window closes. ii) Uses a custom dll to determine if an object’s design window is open. iii) Stops another user from using the OM design button to open the object and reports who has the object opened. b) Benefits i) Safety – two users can’t have the same object opened at the same time. 10) UpGrade (still in Beta) a) Features i) Uses a Source DB (the old custom version-with old baseline objects in history) and a Target DB(the new base version) ii) Create Upgrade projects (Conflict objects, custom Fields, No conflicts) iii) Uses the date time compare functionality to look at the baseline, the new base version and the modified objects to see where the conflicts are and adds those objects to the upgrade conflict project. iv) The conflict Project and objects are dataported out of the source DB and imported into the Target DB. Now you know what objects need to be dealt with. v) Much of this, imports, exports, paths, etc. is automatic. vi) Customizable Upgrade checklist 11) BreakPoints (still in Alpha) a) Features i) Breakpoints set in Navision can be viewed in a form looking at the virtual breakpoint table. ii) These breakpoints records can be copied into a real table and restored to the virtual table. iii) The breakpoints can be turned on and off from this form without opening the object. iv) The breakpoints can be related to a specific project. b) Benefits i) Speed – Don’t have to open objects to activate existing breakpoints 12) Data Dictionary simple/complex (still in Alpha) a) Features i) b) Benefits Wish List 1. The .vso file format to look like a .fob with all the objects listed in a header and the blobs listed below. And still have all the extra Features of the .vso file. This would require a modification of the import/export codeunit Currently the format is: Object info BLOB Object Info BLOB Etc. 2. Have the Object Manager be an open source project with contributors from all over the world. I don’t know yet how this is managed but if we all put our brains together it would be unbelievable. 3. Clean up and refine the SendKeys functionality so more fields in the file open and save dialogs would be auto filled and other similar things. 4. Automatically generate more documentation and versioning info. .

Hej Steve Sounds like a really great project. I would like to hear much more about it.

I think it’s a dream for every (serious :slight_smile: ) developer… I’m very interested in it. I’ve developed a similar tool for our internal purpose and I whould be happy to share it.

Thank you for your interest. I would be very interested in any ideas or code you would like to share. I have submitted the Word Document to the download area “Member to Member Samples and Software” I should have the objects ready in a few days. ( I need to write installation and setup instructions) If you can’t wait email me and I will send you what I have (about 600 kb zip file with objects and preliminary instructions) It is interesting that when you start looking at sharing something, you start seeing the faults you had previously overlooked or worked around, But what I have is a great start and with everyone contributing We can improve it greatly.

It looks like I cannot email you from the forum with an attachment. So until The Object Manager Document is in the download area, email me and I will send you the document.

I have submitted the objects to the download area. So we can go from here. I should have better instructions in a few days Steve

Sounds nice! I have a simular tool we have used internal in the last five years. Mayby I can have some input for you. But I cant find the document in download [V]

Great idea, appreciate you sharing the tool!

quote:

Sounds nice! …But I cant find the document in download [V]
Originally posted by Per Bay - 2005 May 03 : 13:41:02

Anyone else not finding stuff in downloads??? I can’t see this Word document. A couple of months ago the was a ‘new posting in downloads’ shown on the home page. But when I went into downloads, there was no new post. Am I moron and doing something wrong??

Sorry for the confusion. I think Eric Ernst is on a paternity leave until may 10th so the download has not been created yet. The objects are on mibuso.com in the download area. I hope we can have them here soon, too Steve

Hi, Steve I’ve downloaded the tool and installed it on database I’m working on. I’ve committed to history all the objects in the database, then opened a project with a few object I need to to change and a few more for reference - 8 objects all in all. Then I’ve started to play with the thing. It has, indeed, some very interesting features, but I must be doing something wrong since it’s getting more and more slow - unbearably slow. I’ve tried to close and re-open the company, but to no avail. The standard Object Designer form is working normally. I did the setup as suggest in your document. Any idea about what might be the problem? Anna

Hi Anna, Thanks for trying it out. I am getting decent performance. I’m using a Pentium 4 2.2gig, 512 meg ram, 120 gig Hd with usually a couple of fin DB’s, etc. open. I have my object cache at the default 8000 I do set it higher sometimes. I am not on SQL and have not tried it on SQL yet. I do use it on a fin server - it is a little slower (but then Object Designer is a little slower too.) Everything is “normal” Navision Code and objects. Is it the sendkeys that evokes the Object Designer functions thats slow or everything ? If all these settings are comparable my guess is that you need to expand the database because History takes quite a bit of space and CodeSafe is adding objects as you open objects in design. Both of these functionalities are storing copies of the object blob so some extra DB room is necessary. I hope this helps, if not we’ll try something else Again thanks for giving it a try Steve

quote:

Hi Anna, Thanks for trying it out. I am getting decent performance. I’m using a Pentium 4 2.2gig, 512 meg ram, 120 gig Hd with usually a couple of fin DB’s, etc. open.

Pentium 4 CPU 2.40GHz 2.39 GHz, 0,99 GB of RAM 76 GB Hd

quote:

I have my object cache at the default 8000 I do set it higher sometimes. I am not on SQL and have not tried it on SQL yet.

The same for me

quote:

I do use it on a fin server - it is a little slower (but then Object Designer is a little slower too.)

Presently I’m working on a fin server as I usually do. The Object Designer is performing normally.

quote:

Everything is “normal” Navision Code and objects. Is it the sendkeys that evokes the Object Designer functions thats slow or everything ? If all these settings are comparable my guess is that you need to expand the database because History takes quite a bit of space and CodeSafe is adding objects as you open objects in design.

That I’ll try then I let you know. Anyway, I encreased the database of 150Mb as advised, before installing the tool. It was abot 63% before I did that. Now it’s 65%.

quote:

Both of these functionalities are storing copies of the object blob so some extra DB room is necessary. I hope this helps, if not we’ll try something else Again thanks for giving it a try Steve
Originally posted by SPost29 - 2005 May 05 : 16:41:21

Thank you. A newbie’s more question - am I mistaken or there is no way to add an object to a project but to show all the object in the OM window, scroll to the wanted object then click on the Add to Project button? I tried from inside the project card, but objects get in only as reference. Of course, being the OM form slow, scrolling is working at Navision’s worst! Anna

Hi Anna, 65% should be more than enough room in the DB. I very seldom know the object numbers so entering them directly didn’t occur to me (thats a good idea) Actually when you add an object from the object card. I think it is adding it as an object to your project but I have some old code in the project subform that shows red if an object is on another user’s project. I think if you go back to the Main form and filter on your project you will see your object as an object (not red as a reference) Theses are the bugs and inconsistencies that crept in over the year of development. Here’s where we get into the interesting part of this project. How to do changes and keep everybody informed and uptodate. any way we’ll work on that. To fix the color problem on the subform go into the onaftergetcurrrecord trigger and rem out this line of code UsedByOther := OnOtherUsersProject(“Object Type”,“Object ID”,OtherProjID); I hope this helps and please keep me updated on the speed problem. Thanks again for your feedback Steve

quote:

Hi Anna, Actually when you add an object from the object card. I think it is adding it as an object to your project but I have some old code in the project subform that shows red if an object is on another user’s project.

Indeed. Actually it THINKS the object is in an other user’s project. [;)] For some still unknown (to me) reason the variable OtherProjID is filled with the project itself name on the lines inserted directly in the project subform, causing the line to turn red. The same variable is filled (with the same value) on all the lines every time the form is reloaded (all lines red) and is turned blank when the focus is on the main form (all lines black). I didn’t check what the OnOtherUsersProject function does, yet. [:)] BTW - so how is an object in a project supposed to be marked as reference only? The field is not accessible in the subform.

quote:

Theses are the bugs and inconsistencies that crept in over the year of development.

I’m familiar with the phenomenon. [:)]

quote:

I hope this helps and please keep me updated on the speed problem.
Originally posted by SPost29 - 2005 May 05 : 17:41:56

Better don’t talk about it. [xx(] I’ve been forgetting what I was about to do with an object while I scrolled to it or tried to open it… that, of course, might have also something to do with me getting too old for this job. [8D] I’ll try on a local database as soon as I can. Anna

Hi Anna, I’m glad you’re trying it and sorry your having trouble. I appreciate your feedback. I don’t know if others are trying it and getting frustrated and giving up, or not trying it, or trying it and loving it. We could add the field “reference only” to the object projects subform and then you could add refences from the project card by checking the flag. Is everything slow or anything in particular? The Main form uses the the onfind and onnext triggers which call functions in the Object Management code unit 87500. All these function calls might be slowing down the scrolling. I ll see if it helps to move the code back to the form. If you’re getting too old for this job, I’m probably in real trouble[xx(] I sure appreciate your input. I hope you don’t get too frustrated. steve

quote:

Hi Anna, I’m glad you’re trying it and sorry your having trouble. I appreciate your feedback. I don’t know if others are trying it and getting frustrated and giving up, or not trying it, or trying it and loving it. We could add the field “reference only” to the object projects subform and then you could add refences from the project card by checking the flag.

I’d like to know too. Actually I started just thinking to do my usual work using Object Manager instead of the standard Object Designer and learn what it could do on the way. Now I’m getting stubborn about it.

quote:

Is everything slow or anything in particular?

I just started it. Navision opened showing the box “Recovering free blocks list” as it does when it starts after an abend. Then I launched the OM windows (I haven’t added any button yet, I just run the main codeunit from OD windows). The project I’m working on has 9 objects - they appeared in the window one at once, laziliy, as if they were just waking up - I was almost expecting to see them yawn. I also takes several seconds to move focus from a line to another. There’s no way you could not notice this kind of behaviour, so it must have to do with something here in my system, but I really can’t figure out what it might be. [:(] Anyway, I’ve noticed that unticking the project filter the performance gets a little better. The annoying thing is that whenever I switch from an object type to another, the window starts from the first object instead of staying on the last used as OD would do, and, you know, scroll isn’t Navision’s best feature. [}:)]

quote:

If you’re getting too old for this job, I’m probably in real trouble[xx(]

Wanna bet? [;)] Anna

Hi Anna, Thanks for your adventurous spirit. Corncerning the speed, for me,it is a little slower than OD but not unbearably so. It is faster when a project is not marked than when marked. I will be looking at the speed this weekend to see if there is some tuning I can do. i did notice one of the filtering functions was using a find instead of a get (a get might be faster) I be checking it. As far as the OM loosing its place from type to type, I must have broken that along the way. It was working. I will try to fix that this weekend you are right that is annoying. Thanks again Steve

I have applied to http://sourceforge.net ,an Open Source hosting site, to see if I can add the Object Manger as an open source project so we can track changes and objects etc. They say it takes a couple of business days to approve a new project so we will see.

quote:

Hi Anna, As far as the OM loosing its place from type to type, I must have broken that along the way. It was working. I will try to fix that this weekend you are right that is annoying.
Originally posted by SPost29 - 2005 May 06 : 13:18:21

Actually after I posted that remark I found out that I could make it work somehow by clicking on the Project filter, selecting type all and selectiong the object I wanted the focus on, then I could untick the filter and choose a type and the window would stay in place. After discovering that trick, I worked fairly well until lunchtime. Then I went out, leaving the OM open on the Report list. When I came back I discovered that the Report list is still there, but if I switch to an other object type, I get a blank window! [:0] I closed and restarted OM, closed and restarted Navision, but nothing changed - Object Designer still shows all the objects (PHEU!!!), but OM seems to have lost contact with everything but reports… This thing doesn’t like me! [:(] Anna