« My own thoughts on Rocky's suggestion | Main| Using Lists to process dynamic forms »

Design Catalog

Category Show-n-Tell Thursday
Show-n-Tell ThursdaySome of you may have seen my SearchDomino tip years ago about using DXL to create a version control / design distribution tool. But as I was considering what to post for the first Show-n-Tell Thursday, it occurred to me that I've never posted the actual template based on this technique that I've been using to manage all my code at home ever since. So here it is, with all its bells, whistles, and bugs:

DesignCatalog.zip

You may notice a bit of overlap between this template and the TeamStudio product suite. This is intentional... not because I ever had any intention of competing with them (I may be an egomaniac, but even I occasionally realize my own limitations), but because I wanted a free tool to use until I could afford to buy my own copy of their tools. If you have the cash, I recommend, nay, I urge you to buy TeamStudio's tools, because there's nothing else on the market that can do what they do, and they pay for themselves almost instantly by saving you time, stress, and sometimes even tears. The quality of your code will also be improved, and rumor has it some clients and managers like that almost as much as timeliness. Finally, their support is fantastic, whereas any fix/enhancement requests I receive for Design Catalog would be handled on a "yeah, when I get around to it" basis... although its open-sourceness would also allow you to make any tweaks you deem necessary yourself.

That said, for those of you whose budget is stretched too thin, the functions that DesignCatalog supports which overlap some of TeamStudio's functionality are as follows:
  • Version control: DesignCatalog allows you to archive auto-numbered versions of individual design elements and roll back to them as needed, which is a portion of what TeamStudio's CIAO! component does; CIAO! also supports design locking (and did long before that was implemented in the Designer client) and build distribution by promotion path (i.e. development to test to production).
  • Drag-and-drop distribution of elements from one or more source databases to a single target database - this is just a tiny piece of what TeamStudio's Design Manager (the artist formerly known as "Librarian") can do. It's also the component that ties the rest together, although each can operate independently of the others, whether or not Design Manager is available.
  • Automatic capture and purging (based on age, count, or total size) of snapshots of design elements as they are saved - this feature, which is accomplished via integration with Trigger Happy, is more or less equivalent to TeamStudio's Snapper component. It also happens to contain the only bug I know of: if design locking is enabled, multiple snapshots are captured for each edit; in fact, a snapshot is captured upon opening an element that has not yet been locked, because Designer automatically locks it, which is still considered a design modification by Trigger Happy. Other than that, it works pretty well: if you've had a design element open for hours, hitting Ctrl+S every few minutes, then suddenly the touchpad goes monkey on you and wipes out a whole block of code just as you're saving again, you can roll back to the last snapshot instead of having to restore from backup and lose a whole day's work.
So there ya have it. Earlier tonight, the download link pointed to a file resource in my blog database, but I've moved it to OpenNTF, in case there is enough demand for improvements to warrant an ongoing project.

technorati tag:

Comments

Gravatar Image1 - This sounds very cool . I have not looked at it very closely but could this work locally? Ther Server says my name?? Is that correct?

Gravatar Image2 - Chad, since the refresh agent is set to be scheduled, it uses NotesSession.UserName to determine the server name instead of NotesDatabase.Server. Hence, when running locally it will list your name as the server. But you could modify it to run locally by using the latter instead and display "Local" in the views if the server name is blank. Come to think of it, you'd also have to muck with the folder generation and/or design element transfer code if you want to retain the drag and drop functionality.

Gravatar Image3 - How do i setup the snapshot feature ? I've installed Trigger Happy, but cannot find a note of how to configure Design Catalog to work with TH.

Gravatar Image4 - Yep what about the integration of Trigger Happy.

Gravatar Image5 - Sorry for the delayed response, been inundated lately.

To integrate Trigger Happy with DesignCatalog, create a new trigger in the Trigger Happy configuration database with the following properties:
- Set DesignCatalog as the database containing the agent to run
- Set ElementSnapshot as the agent to run
- "Run selected agent" can be set to either before or after, depending on your preferences, namely, whether you want the snapshot content to be the design element as it existed prior to the save or afterward
- Set it to launch when a document is modified or saved (if desired, you can also create a separate trigger to launch the agent before a design element is deleted, which would allow you to restore deleted elements)
- Set it to run on all databases in the system (if the element being saved is not being monitored by DesignCatalog, the agent will terminate without taking any action)
- Set it to run only on design documents
- Since DesignCatalog keeps track of which elements are monitored by the trigger, I've not yet experimented with using selection formulas on the trigger document, but would be curious to hear if others find a use for this

That's all there is to it. Once that's enabled, open any design element profile in the Design Element Manager screen of DesignCatalog and click "Monitor This Element", then configure the monitor settings to control how many snapshots should be maintained for that element: by count (i.e. always maintain the last 10 changes), by size (i.e. maintain up to 1 MB of snapshots), or by time (i.e. save all changes made in the last week). From then on, snapshot collection will be automatic.

Gravatar Image6 - Hi

I am Ferhat İkbal from Turkey, I tried your application and i saw a bug or I don't know.

When I import a design note, ( For Example; a form with 1 hotspot button, Button is LotusScript button and Click Event is written ) Click event coming double ...

There are 2 click event in button's events, when I change one, and another is changing,
or when I change programming language type (from combobox, LotusScript to Formula ) I am getting an error ...

Do you know this property or bug ?

I am waiting your response ...

Thanks & Regards,

P.S. : I am using Lotus Notes 7.0.1

Hire Me

Elsewhere

What the Quote?

"Right-click is awesome, but nothing beats a good 'Mary Kate' command."

Steven Rodgers

"I wonder if there's ever been a dog like that, and natural selection said, '...No'."

Laura Tripcony

"When driving in Jersey, you need to drive confident, so everyone else drives scared."

Steven Rodgers

"Hold on, my head's itchy."

Steven Rodgers

"Where's the 'existing server'? Hold on, I don't know if 'redneck' has an I.P. address."

Steven Rodgers

Apparel

Lotus Rocks

I write the code that makes the young girls cry