I am very honored to be speaking at the fantastic Engage User Group ( formerly known as BLUG ) this week.
The session is called “Seeing the Wood for the Trees” and is about how I and my colleagues use Domino Designer, Git Source Control and some mostly Atlassian products to manage our help tickets, project management, release management and billing.
The session is at 14:45 on Tuesday and is 50% slides / 50% live demo.
As I have learnt to my cost before it is difficult to go into Source Control in deep detail in 45 minutes so this session is a high level overview for both managers and Developers to show some of what can be achieved by using Source Control with Domino.
We waited a long time for Source Control in DDE and it got off to a shaky start but I am really pleased with what IBM has given us and how it works now. It really has allowed us to integrate the management of Notes / XPages code into our overall processes.
There is obviously more we want to do but this is a good story to share.
All suggestions welcomed. Apologies in advance for needing to moderate comments – my only disappointment in moving from Domino Blog has been how badly WP manages Spam – even with various plug-ins.
Being from a LotusScript background i really like being able to see all of the code from my script library in one long searchable block.
I get very frustrated with Java script libraries when I know a keyword I have searched for is in there somewhere but I am forced to navigate though each class within a script library to find it.
If you are using source control you can see all of the script library as a single file within the ODP. This then allows you to search for keywords and backtrack up the text file to see which library the code you want was in. I use Notepad ++ which is free and excellent. Notepad++ will also reload the ODP file as it is changed in DDE.
The other trick with Java is that once you are back in the editor you can press f2 and then click from a reference to a class through to that class
If anyone has a better way of navigating Java please let me know – it seems so awkward.
We are getting on really well with Source Control using GIT in Domino but there are a couple of niggles that waste a lot of time.
One our standard design patterns uses a page with a computed outline for a horizontal menu as shown below. When you build the project from an ODP the embedded outline is missing – this affects 95% of our apps.
When you look at the DXL or the ODP neither mentions the formula that defines the Embedded Outline – it only records the outcome of the formula at the time the ODP was created. This is in 9.0
Work-around – avoid computed outlines on pages 🙁
Does anyone know who is the “Paul Hannan” of Source Control ?
It is useful to have colour coding of target dates in views but in traditional Notes applications ( as opposed to XPages ) this carries a big overhead if you do the date calculation in the actual column using @today etc.
This scheme uses a scheduled agent to replace the column formula each night with a hard coded date. It runs on 120 views in less than 1 second.
The scheme also uses a configuration document for the formula so that super users can update the threshold values.
There are 3 parts to consider :
1) the column formula. The image below shows it in the configuration document.
The bits in yellow are the constructors that are used to insert the relevant dates for the banding. In this case > 5 days away is neutral 0 – 5 days is yellow overdue = red
2) The column in the view.
This column is hidden and has the property “Use value as colour”. This title of this column must start AGENTLINKED so that the scheduled agent can pick it up and modify it ( see below ) There must also be another column to turn the colour off again. The value of the formula after the agent has run is shown below – you can leave it blank and then run the agent to populate it.
3) The Scheduled Agent
The scheduled agent loops through every view and every column within each of those views. Where it finds a column with he AGENTLINKED string in the title it tries to update this.
When updating it :
1) extracts the relevant configurable formula string from the configuration document shown above. You can have multiple configuration documents in case you need different target thresholds for different views etc..
2) it replaces the [#n#] with a date which is n days from now
3) it inserts the modified formula into the column as shown above.
‘ Sean Cull, FoCul Ltd. ‘ Released under Apache 2.0 ‘ The purpose of this agent is to modify the column formula ‘ for columns so that dates can be highlighted as they become overdue. ‘ the column title will need to start with the phrase “.AGENTLINKED” ‘ e.g .AGENTLINKED : Colour_on_001 ‘ this is then used for the keyword document that contains the formula. ‘ in the keyword document date increments are notated byu [#x#] where x ‘ is the number of days from today. ‘ e.g @If ( target_date_dt > [#3#]; bgd:Dark_Blue ; …….. ‘ full example : red := 255:0:0; blue := 0:0:255; green := 0:255:0; gold := 255:128:0; black :=0:0:0; white := 255:255:255 ; yellow:= 255:255:0; bgd := 224:241:255 ; Dark_Blue := 0:0:128; @If ( target_date_dt > [#3#]; bgd:Dark_Blue ; target_date_dt >= [#0#];yellow:black; target_date_dt < [#0#];red:white; -1:-1:-1)
Dim session AsNew NotesSession Dim rightNow AsNew NotesDateTime(Now) Dim db As NotesDatabase Dim configview As NotesView
Set db = session.CurrentDatabase Set configview = db.GetView(“vlukeywords”) ForAll v In db.Views ForAll vc In v.columns IfInStr(vc.Title,“AGENTLINKED”)>0Then Call process_column(vc,configview) EndIf EndForAll EndForAll EndSub Sub process_column(vc As NotesViewColumn, configview As NotesView)
Dim configdoc As NotesDocument Dim strvar AsString Dim strvar2 AsString Dim pos AsInteger Dim pos2 AsInteger Dim incrementstr AsString Dim datestr AsString Dim dt AsNew NotesDateTime(“Today”) Dim z AsInteger
Set configdoc = configview.GetDocumentByKey(“.” + vc.Title )
If configdoc IsNothingThen MsgBox” could not find configuration key .” + vc.Title ExitSub EndIf