• Browse Blogs
  • My Blog
  • My Updates

+Tags Get help with tags?

  • View as cloud  | list

+ Similar Blogs

photo

Yellow is the...

72 Entries |  Tim Tripcony
Updated 
RatingsRatings 2     CommentsComments 34
photo

Lotus Nut

111 Entries |  Chris Whisonant
Updated 
RatingsRatings 23     CommentsComments 157
photo

Patrick Picar...

62 Entries |  Patrick Picard
Updated 
RatingsRatings 2     CommentsComments 112
photo

Urs Meli

42 Entries |  Urs Meli
Updated 
No RatingsRatings 0     CommentsComments 48
photo

TexasSwede

109 Entries |  Karl-Henry Martinsso...
Updated 
No RatingsRatings 0     CommentsComments 94

+ Bookmarks

+ Blog Authors  

All entries tagged with .dominoframework

1 - 15 of 94

Bringing The Power Of JavaScript To LotusScript

Peter Presnell |   | Tags:  .dominoframework arrays javascript lotusscript strings | Comments (0)  |  Visits (225)
I find new experiences are often the greatest source for innovation in my work.  This proved to be the case for me several years ago when I left my role as a Lotus Notes Developer to take on a role that involved using C# and ASP.Net.  When I returned to Notes development I found myself wanting to take many of the great things I had experienced with .Net development and apply them to Notes development.  This gave rise to me becoming an Object Oriented Programmer and also lead to me developing the .Domino Framework.  Version 1.0 of the .Domino Framework (available on openNTF) was my way of of taking many of the cool things I had found in the .Net framework, combining them with what I was now seeing with Notes 8.0, and delivering them using the Notes 6.0 technology I was being asked to use in my work.
.
I am now working on .Domino Framework 2.0. This new framework will be built from the ground up to overcome some of the complexities and limitations found in the original framework.  The inspiration for this new framework is coming from the time I spent late last year using Notes 8.5, XPages, and JavaScript (including SSJS) and what I saw at Lotusphere with Project Vulcan.  Is there a need for such a framework?  Well I believe so.  So far this year my own projects have been almost exclusively Classic Notes.  Unlike the world of many business partners, there is simply no demand at this time for me to develop XPage applications.  Also.... I also only have one month left on one of my current contract so I have been paying much closer attention to the Notes Job market.  What I have found interesting is that there is no signs of any significant demand (if any) for Notes developers with XPages experience.  It seems to me that the same skills of Notes Classic, LotusScript, LEI etc are the skills being sought for most of the current positions.  So after escaping the hype of #ls10 I am beginning to suspect that a very high proportion of Notes development in my part of the world will continue to be done using LotusScript.  My first goal for 2010 is therefore to find ways to add the power of JavaScript to the LotusScript language.   (And maybe even explore ways in which some of the concepts demonstrated for Project Vulcan can be implemented using Notes Classic.)  IBM stopped investing in LotusScript after Notes 6, but that doesn't mean the language should/need die.  It never ceases to amaze me just how flexible LotusScript and Notes Classic are as a development environment.
.
As an example.  LotusScript does not provide an extensive set of operations that can be performed on arrays.  So I have developed a new DominoArray class as part of the core of the .Domino Framework 2.0.  This class add properties and methods that are found in @Formulae, JavaScript, and Java that were never added to LotusScript.  Being a class it is now also possible to exhibit some of the capabilities and styles JavaScript provides with its own data types being implemented as customizable Objects.  The DominoArray class provides a length property (as provided in JavaScript and @Elements).  A number of methods have been implemented such as push(), pop(), slice(), splice(), reverse(), toString(), sort(), contains() (@Contains), keword (@Keywords), and subset (@Subset).  Using the DominoFramework 2.0 it becomes possible to write code that looks remarkably like some of the JavaScript code I had started to write last year.  e.g.
Call MyArray.Push(NewValue)
If (MyArray.Length > 3) Then Print MyArray.Splice(1,3).Sort().toString()
Another example is the Math object that is provided by JavaScript.   To reproduce this in LotusScript I have defined a DominoMath class as a container for all those special mathematical operations and constants not built into LotusScript.  By defining a global variable Math, which instantiate an instance of DominoMath, it becomes possible to write LotusScript code that looks very much like JavaScript.  e.g.
myBigVar = Math.Max(A,B)
myColor = Math.HexToDecimal(HexValue)
If there was one message I could leave for the still many Lotus Notes developers not yet doing projects with XPages, Vulcan etc....   It doesn't matter if you are still using Lotus Notes R5 or that Notes 8.5.1+ may still be several years away.  Nor does it matter if you have little or no access to Lotus products such as Connections, Quickr, or LotusLive.  Try and at least take a close look at what all these products offer.  And then go back to your own environment and think about how you can implement some of the cool features these other products provide.  With any version of Lotus Notes from R5 onwards you have the most powerful, flexible, and adaptive product in the Lotus family.  All that is required is a little inspiration and some cool LotusScript code.  (or of course you could wait for the .Domino Framework 2.0 to become available).
No RatingsRatings 0

Adding the "X" Factor

Peter Presnell |   | Tags:  xpages ssjs .dominoframework | Comments (2)  |  Visits (524)
As I slowly work my way through XPages school I am collecting all my written assignments and placing them in a project folder. This project folder is known on OpenNTF as the xDominoFramework project. The project can be downloaded from OpenNTF or you can view various aspects of it on-line from www.dominoframework.com.
:
Some of the material was written using crayons while I was in XPages kindergarten. Some material is a little better having been written during my time in first grade. It still has a long way to go but it may offer some assistance to those making a similar journey. You can expect it to improve over time as I learn more about XPages and SSJS.

The content is built from the .DominoFramework and adds the following:-

Developer Tools:
New Summary - I have added a new summary of the developer tools using Xpages repeater control as an alternate way to style a view.
Event Simulator - Following on fromk my recent blog I have provided an on-line event simulator to explore the order tghat evnts are executed on an Xpage.
Code Generator - This tool has been extended to produce property code for SSJS.

Application Design
The Web version demonstrates how a dijit tree control can be combined with framesets to allow an outline control to be generated as Xpage components.

Themes & Styling
I have started to collect a series of popular style sheets such as bluprint, bluetrip, and OneUI (inlcuing the OneUIDummy developed by Stephan Wissel).

OOP Framework
The first attempts have been made at creating a library of SSJS that mirrors the LotusScript Domino class that formed the nucleus of the .Domino Framework.

Yellowverse
I have added an updated version of my blog - Devil's Guide to the Yellowverse as well as provided links tgo wide range of community resources of use to the Note community.

Please feel free to provide any feedback on this project either here or via the .Domino Framework bleedyellow community  
No RatingsRatings 0

Tagging Design Elements

Peter Presnell |   | Tags:  tags designelements .dominoframework | Comments (1)  |  Visits (513)
One of the (many) cool things about Notes is that the code exists in the NSF as documents much the same as data documents.  This means we can do many of the same things with design elements as we do documents.  And that includes tagging.  I have been doing some work over the weekend to take some of the stuff I am developing for Discussion NextGen and adding it to the .Domino Framework to allow users of the framework to easily discussion-enable any application.  To assist in this process I need a simple way to identify the design elements that are needed to discussion-enable an application.  Users of TeamStudio Design Manager may know that the product provides a way to easily update a group of design elements from one database into another.  This is done by "tagging" design elements with group names.  Underneath the hood this works by storing the groups (tags) in a field called $GroupInfo.  Not wanting to reinvent the wheel I have been making use of this field within the .Domino Framework.  e.g. I have a view that will display all design elements categorized by $GroupInfo.  Today I added an new view action that allows you to assign new tags to the $GroupInfo field.  This essentially provides you with a way of assigning tags to design elements and view the design elements grouped by tag.  And if you use TeamStudion Design Manager you get the added benefit of being able to move all the design elements with a specific tag between databases.  Keep a look out for the next version of the .Domino Framework for this and other developer tools.  The next version is being developed for Notes 8.5.1 and will include tools and code for XPage and SSJS developers.
No RatingsRatings 0

Add Discussion Threads to Existing Notes Apps In Under 5 Mins

Peter Presnell |   | Tags:  .dominoframework discussion templates | Comments (2)  |  Visits (830)
 As part of my work on the Discussion NextGen project I have been looking at ways the discussion thread capabilities provided by a discussion database could be easily added to any existing Notes Application.

I have now taken the work I have done so far on Discussion NextGen and folded it back into my own.Domino Framework project.  With a few tweaks I have been able to
  1. Add a discussion area to the framework database in which people can add new discussion topics and/or create responses; and
  2. Add discussion threads tied to other documents that already existed in the framework database.
The steps involved to discussion-enable your own application would include:-
  1. Copy a defined collection of design elements into your application
  2. Add outline entries that connect to the standard Discussion views you wish to include
  3. Add a sub-form to any existing forms you wish to discussion enable
There will also be some advanced configuration options available with the installed code that can be added that would allow you to fine tune the discussion capabilities you require.  e.g. Turning off advanced discussion features such as sticky Notes, read-only topics etc.

My goal is to make this task no longer than 5-minutes and in the coming weeks I hope to have a 5 minute video that proves it.

Note: It has not yet been determined if any of these feature will be included as part of IBM's discussion template.  But at the very least you can expect the components to be available as part of an upcoming release of the .Domino Framework.


No RatingsRatings 0

New Video Includes Sneak Preview Of Eclipse LotusScript Editor

Peter Presnell |   | Tags:  propertygenerator lotusscript dde .dominoframework | Comments (0)  |  Visits (530)
As many of you many know I have been lucky enough to have the chance to participate in the OpenNTF project to extend the Discussion template.  The team includes Niklas Heidloff and Steve Castledine, two of IBM's great application developers.  These guys are constantly coming up with great ideas for this project.  One of Niklas's contributions was the idea of using video as a medium to communicate some of the ideas we have for the template.  Thanks to Niklas it is now occurring to me that video may be one of the missing pieces for one of my other OpenNTF projects, the .Domino Framework.

Here is my first video which explains one of the framework's developer tools, the Property Generator and how it can be used in conjunction with the new Eclipse LotusScript Editor to quikcly generate LotusScript classes.  So if you haven't yet had a chance to see the new LotusScript editor up close, here's your chance.
No RatingsRatings 0

Adding Web Service Connections

Peter Presnell |   | Tags:  webservices .dominoframework | Comments (0)  |  Visits (1,150)
Release 1.0.2 of the .Domino Framework will contain the first small steps for building an SOA. The existing Connections feature (available with 1.0) will be extended to support Web Services.

For those not familiar, the concept of Connections is to define all external dependencies an application may have via a series of "Connection" documents.  This eliminates the need for hard-coding the information about external resources.  As documents these can be changed without the need for code changes.  As data documents these can be copied from application to application.  Even the basis for the connection can be changed (e.g. a connection to a Notes database can be defined using servername/filpath, replicid, or NotesURL and then changed on the fly to one of the other methods).

The same need exists when linking to Web services.  The URL used to invoke a Web service will also change each time there is a change to the server name, or filepath.  This includes when an application migrates from a development environment to qa and on to production.  By creating a Connection document for each web service we can change details about the web services withou the need for coding.

The following is a sample of the standard code from a Web Service Consumer generated by importing a WSDL:-
%INCLUDE "lsxsd.lss"
Class PropertyGenerator As PortTypeBase

Sub NEW
Call Service.Initialize ("UrnDefaultNamespacePropertyGeneratorService", _
"PropertyGeneratorService.Domino", "http://devservername.domain.com:80/dominoframework2.nsf/PropertyGenerator.wsp?OpenWebService", _
"PropertyGenerator")

End Sub

Function GENERATEPROPERTY(LANGUAGE As String, PROPERTYNAME As String, FIELDNAME As String, _
FIELDTYPE As String, GETREQUIRED As Boolean, SETREQUIRED As Boolean, TRACKCHANGES As Boolean) As String
Let GENERATEPROPERTY = Service.Invoke("GENERATEPROPERTY", LANGUAGE, PROPERTYNAME, FIELDNAME, FIELDTYPE, GETREQUIRED, SETREQUIRED, TRACKCHANGES)
End Function

End Class
As you can see, the server name and filepath of the web service is hard-coded.  If this pointed to a dev server you would need to change the code before it is migrated to production (never a good idea).  Using a Connection the code could be rewritten as

%INCLUDE "lsxsd.lss"
Class PropertyGenerator As PortTypeBase

Sub NEW
Dim URL As String
URL$ = GetConnectionString("PropertyGenerator")
Call Service.Initialize ("UrnDefaultNamespacePropertyGeneratorService", _
"PropertyGeneratorService.Domino", URL$ + "?OpenWebService", "PropertyGenerator")

End Sub

Function GENERATEPROPERTY(LANGUAGE As String, PROPERTYNAME As String, FIELDNAME As String, _
FIELDTYPE As String, GETREQUIRED As Boolean, SETREQUIRED As Boolean, TRACKCHANGES As Boolean) As String
Let GENERATEPROPERTY = Service.Invoke("GENERATEPROPERTY", LANGUAGE, PROPERTYNAME, FIELDNAME, FIELDTYPE, GETREQUIRED, SETREQUIRED, TRACKCHANGES)
End Function

End Class
No RatingsRatings 0

DominoDatabase.GetDocumentByUUID

Peter Presnell |   | Tags:  uuid .dominoframework | Comments (1)  |  Visits (547)
A little over a year ago Nathan Freeman published an article about Universally Unique Identifiers (UUIDs). The article also refers to work being done by other Notes developers on exploring ways in which Notes applications can speed up the process for locating documents.  The technique involves using the @Password function to create a random UNID for a document based upon some external key you have for the document.  This subject came up again in a conversation I was having over the weekend with Nathan and Tim Tricony.

The result of the conversation is a new GetDocumentByUUID method that I am adding to the DominoDatabase class for .Domino Framework 1.0.2.  The code below can be adapted as a way of generating a UUID for a document.
'/**
' * Return a document based upon the UNID being composed of the hasked value of the key
' *
' * @param Source The external key for the document
' * @param Create True = return new document if no existing document found, False = only return an existing document
' * @return A document with the matching key
' */
Function GetDocumentByUUID(Source As String,Create As Boolean) As NotesDocument
Dim ReturnValue As Variant
Dim UNID As String
Try:
On Error Goto Catch
On Error 4091 Resume Next ' Document does not exist with UNID
ReturnValue = Evaluate(|@Password("| + Source$ + |" )|)
UNID$ = Mid$(Cstr(ReturnValue(0)),2,32)
Set GetDocumentByUUID = iDB.GetDocumentByUNID(UNID$)
If (Not GetDocumentBYUUID Is Nothing) Then Exit Function
If (Not Create) Then Exit Function
Set GetDocumentByUUID = New NotesDocument(iDB)
GetDocumentByUUID.UniversalID$ = UNID$
Exit Function
Catch:
Stop
ReportError Nothing
Exit Function

End Function
No RatingsRatings 0

The Best Thing About Notes 8.5 Is.....

Peter Presnell |   | Tags:  webservices .dominoframework soa | Comments (0)  |  Visits (1,046)
It would be fair so say over the past few weeks that I have been caught up in all the hype about XPages.  So much so that I had forgotten about the thing I was most looking forward to when doing Notes 6 development.  For me the single most important recent enhancement to Notes was not XPages or even the new LotusScript editor (in 8.5.1) but the ability to design Notes applications using a Services Oriented Architecture.  To me this one new capability ensure Notes future more than anything.  Let me explain why.....

What Is SOA?
There are many definitions out there on SOA.  To me SOA extends the concept of Object Oriented Programming to an entirely new level.  With OOP we define applications as objects (classes) comprising properties (data) and operations (methods).  Now step back and look at all the applications in your organization.  Not as a disparate set of applications but rather as a series of components capable of interacting with each other without regard of the application platform in which they were developed.

Why Is SOA so Important?
Suddenly the application platform is no longer as important as it once was.  As long as that platform supports Web Services (and other higher levels of SOA such as property brokers etc.) it really doesn't matter platform what they are written in.  Notes applications no longer need to be second class citizens within an IT department.  By creating Web Services Notes applications can be accessed by non-Notes applications in the same way as any other SOA application.  Likewise Notes applications can also access data from these other applications directly without the need for LEI or other data synching processes.  Moving towards an SOA has the potential to solidify a place for Notes as a strategic application development environment.  For the great many small-medium sized applications Notes will often offer a clear advantage over alternatives due to its RAD environment.  In fact, the need for large applications can be replaced by building a a larger number of smaller components that are intergrated via SOA.

And Xpages?
Xpages can consume Web services so they are not excluded from this and this may even represent a better way to integrate XPage and non-Xpage Notes applications.  Even within a single Notes applications, web services represent a way you can invoke LotusScript code from inside an Xpage.

SOA will not happen overnight.  Some organizations are much more advanced than others.  With Notes 8.x SOA is relatively simple to implement .  So the opportunity is there for Notes developers to lead the way   Web service providers were added in Notes 7.  Web Service Consumers and Composite applications were added in Notes 8.0.  My suggestion would be to become familiar with these design elements and play around with them.  I will be developing SOA components as part of the .Dominio Framework 2.0 and you will probably see as many blogs from me about SOA  as XPages in the coming months.  My goal is to transform my own Notes applications into components and then start integrating them, in ways that were never possible before.
No RatingsRatings 0

DominoDesignCollection.SetDesignTemplate

Peter Presnell |   | Tags:  .dominoframework | Comments (0)  |  Visits (419)
Version 1.0.2 of the .Domino Framework will contain a new method for setting the Design Template name for one or more design documents.  The view used by the framework to display all design documents via the Notes client now has a view action that invokes this method for selected documents.
No RatingsRatings 0

SNTT: DominoMemo.AppendViewAsTable

Peter Presnell |   | Tags:  .dominoframework lotusscript messaging | Comments (0)  |  Visits (507)
It's been a while since I shared some code....

The DominoMemo class was developed as a way of simplifying the code an application requires to produce e-mail notifications. The 1.0.2 version of .Domino Framework will contain a new AppendViewAsTable method that allows an application dveeloper to request a table be added to the body of a memo that shows the data in the view along with doclinks to each document.  This is similar to the Copy Selected as Table command and NotesNewsletter class.  The method also allows the data embedded to be restricted to a single category in the view.  The code is provided below for those that wish to adapt it for their specific needs.
'/**
' * Append the data in a views as a table in the body of the e-mail
' *
' * @param View The view to be appended
' * @param Category Single category of view to be included - Nothing = all rows
' */
Sub AppendViewAsTable(View As NotesView, Category As Variant)
Dim Column As NotesViewColumn ' Specific column in view
Dim ColumnIndex As Integer ' Index of the column being processed
Dim Doc As NotesDocument
Dim TableColumn As Integer
Dim DocEntry As NotesViewEntry ' View entry for column being processed
Dim NoColumns As Integer
Dim RowIndex As Integer ' Row in table being processed
Dim RTNav As NotesRichTextNavigator ' Allows navigation within Rich Text Item containing table
Dim TableStyle As NotesRichTextParagraphStyle
Dim TableStyles() As NotesRichTextParagraphStyle ' Styles used to format table
Dim ViewNav As NotesViewNavigator ' Navigation of view
Dim ViewEntries As NotesViewEntryCollection ' Entries in view
Try:
On Error Goto Catch
Redim TableStyles(0)
Set TableStyles(0) = Session.CreateRichTextParagraphStyle()
TableStyles(0).LeftMargin = 0
TableStyles(0).FirstLineLeftMargin = 0
TableStyles(0).RightMargin = 150
For ColumnIndex% = 0 To Ubound(View.Columns)
Set Column = View.Columns(ColumnIndex%)
If (Not(Column.IsHidden Or Column.IsCategory Or Column.IsHideDetail)) Then
NoColumns% = NoColumns% + 1
Redim Preserve TableStyles(NoColumns%)
Set TableStyles(NoColumns%) = Session.CreateRichTextParagraphStyle()
TableStyles(NoColumns%).LeftMargin = 0
TableStyles(NoColumns%).FirstLineLeftMargin = 0
TableStyles(NoColumns%).RightMargin = Column.Width * 150
End If
Next ColumnIndex%

Select Case Typename(Category)
Case "STRING","STRING ()"
Set ViewNav = View.CreateViewNavFromCategory(Category)
Set ViewEntries = View.GetAllEntriesByKey(Category)
Case Else
Set ViewNav = View.CreateViewNav
Set ViewEntries = View.AllEntries
End Select
Call iBody.AppendTable(ViewEntries.Count+1,NoColumns%+1,,RULER_ONE_INCH,TableStyles) ' Create empty table
Set RTNav = iBody.CreateNavigator()

' Output view title to first row

TableColumn% = 1
For ColumnIndex% = 0 To Ubound(View.Columns)
Set Column = View.Columns(ColumnIndex%)
If (Not(Column.IsHidden Or Column.IsCategory Or Column.IsHideDetail)) Then
TableColumn% = TableColumn% + 1
Call RTNav.FindNthElement(RTELEM_TYPE_TABLECELL,TableColumn%)
Call iBody.BeginInsert(RTNav)
Call iBody.AppendText(Column.Title)
Call iBody.EndInsert()
End If
Next ColumnIndex%

' Output Data

RowIndex% = 1
Set DocEntry = ViewEntries.GetFirstEntry()
While Not DocEntry Is Nothing
Set Doc = DocENtry.Document
Call RTNav.FindNthElement(RTELEM_TYPE_TABLECELL,RowIndex%*(NoColumns+1)+1)
Call iBody.BeginInsert(RTNav)
Call iBody.AppendDocLink(Doc,"")
Call iBody.EndInsert()

TableColumn% = 0
For ColumnIndex% = 0 To Ubound(DocEntry.ColumnValues)
Set Column = View.Columns(ColumnIndex%)
If (Not(Column.IsHidden Or Column.IsCategory Or Column.IsHideDetail)) Then
TableColumn% = TableColumn% + 1
Call RTNav.FindNthElement(RTELEM_TYPE_TABLECELL,RowIndex%*(NoColumns%+1)+TableColumn%+1)
Call iBody.BeginInsert(RTNav)
If Isarray(DocEntry.ColumnValues(ColumnIndex%)) Then
Call iBody.AppendText(Join(DocEntry.ColumnValues(ColumnIndex%),","))
Else
Call iBody.AppendText(DocEntry.ColumnValues(ColumnIndex%))
End If
Call iBody.EndInsert()
End If
Next ColumnIndex%
RowIndex% = RowIndex% + 1
Set DocEntry = ViewEntries.GetNextEntry(DocEntry)
Wend
Exit Sub

Catch:
Stop
ReportError Nothing
Exit Sub
End Sub
No RatingsRatings 0

Domino Framework Strategy

Peter Presnell |   | Tags:  .dominoframework | Comments (2)  |  Visits (745)
For the past 3 weeks I have been looking at both Notes 8.5.0 and  8.5.1 beta.   It has been a fascinating time with many many new things to learn.  There have also been many many questions...  But slowly I have mapped out a few things in my mind on how best to position my current OpenNTF projects

.Domino Framework 1.0
This was my first project.  It is a component library (template) containing code that can be copied and pasted into Notes applications being developed for the Notes client.  All the components are generic components that are typically found in a wide range of applications (file export, keyword documents, notifications, document counters, error logging, edit history etc.)  The framework has an OOP library of 100+ classes that extend the Notes production classes and add additional classes that I only wish IBM would have had developed themselves.  In many ways the framework fills in gaps between what Notes 6.0 actually provides and what I wish Notes 6.0 might have provided if IBM had devoted more time on extending LotusScript and the traditional design elements.  It also includes ideas on how to build applications that look and behave like Notes 8.x using the Notes 6.0+ client.

Moving forward I will be adding additional enhancements, fixing bugs and completing some of the things still half-baked.  These will all be 1.x release and will continue to support Notes 6.0+.

.Domino Framework 2.0
A new project that will extend the .Domino Framework but support traditional Notes development using additional features added since Notes 6,0.  It will also be LotusScript based and will seek ways to reproduce some of the design patterns and features of XPages without using XPages.  This framework will also be devoted to getting more from the Notes client.  The version of the framework will be targeted at Notes 8.x+ application developers looking to exploit the Notes client and don't find Xpages in their current form a viable solution.

xDomino Framework.
This new project will focus of establishing a framework for XPage development that will hopefully help RAD in the newest version of Notes Development.  Expect to see a large library of custom controls and a wide range of classes that can be used in XPage design.  Classes developed for the .Domino Framework will be redeveloped using Java and possibly surfaced through SSJS objects.

.SCRUM
The will be an XPage application developed using the xDomino Framework allowing Notes Development teams to manage Notes projects.  It is based on the SCRUM  Agile methodology but adapted to suit the unique world of Notes development.

.Collaborate
Another XPage based application that will attempt to integrate a wide range of collaboration assets and tools into a single location.  It will allow people to gather in communities and then connect assets to individuals or communities.  Assets will include such things as discussion databases, bulletin boards, web sites, rss feeds, blogs, wikis, activities, suggestion boxes, and other Notes applications.

Participation, ideas, and feedback for any o these projects are always most welcomea and can best be coordinated by joining or commenting at my bleedyellow community.
No RatingsRatings 0

.Collaborate

Peter Presnell |   | Tags:  .collaborate .dominoframework | Comments (10)  |  Visits (591)
Boy I have a tough teacher.  Many of you probably know I enrolled in XPages Kindergarten several weeks ago and I have been blogging about my experiences.  Well now I have been assigned my very first class project.  I have been asked to use XPages to replicate much of the functionality of Lotus Connections.  But not just that, my kindergarten teacher also wants me to integrate Lotus Notes collaboration tools such as wikis and discussion forums. hmmm.  I wonder what I'll get assigned when I make it to first grade????  I have to say that there is nothing like a real project to learn, especially a challenging one.  It motivates me and also forces me to dig around a lot and hence develop a deeper understanding.  So.....

If there is anyone else out there also working there way through XPages kindergarten and would like to join me on this project, please let me know.  I am sure the teacher will not mind.  I have set up a community on yellowpages.com for this and there is also a project on OpenNTF

The screen shot below shows the progress I have made so far.  I may be still drawing with crayons here but at least I'm slowly filling something in on the blank piece of paper my teacher gave me.

image
No RatingsRatings 0

.Domino Framework 1.0.1 Released on OpenNTF

Peter Presnell |   | Tags:  openntf .dominoframework | Comments (0)  |  Visits (741)
I have just released he latest version (1.0.1) of .Domino Framework on OpenNTF. This is a minor release with a small number of bug fixes and minor improvements.
No RatingsRatings 0

New OpenNTF Project - xDomino Framework

Peter Presnell |   | Tags:  .dominoframework xdominoframework openntf | Comments (3)  |  Visits (578)
It is still early days in my Xpages learning but one thing has already become very clear.  Xpages development is crying out for a framework even more so than LotusScript. It is not yet clear to me how much of my time moving forward is going to be spent doing Xpages development, but the extend to which I do I just know a lot of my time is going to be consumed collecting code from all over the place and consolidating it and combining it with my own code in a way that will allow me to continue to do Rapid Application Development.

It is now clear to me that I need two separate framework.  The existing one that is OOP LS based and will support all non XPage development and a separate one that will focus almost exclusively on Xpages and SSJS (and possbly Java and even LS at a later stage).  My goal is to at least have a beta posted on OpenNTF sometime soo after 8.5.1 is released.

The current .Domino Framework proect is likely to be extended but will focus on non-XPages development.  How much will depend on how much non-Xpages development gets done in the future.

I have now created a community on bleedyellow.com.  Anyone who would like to get involved in any way is encourage to join this community (it is moderated but I have super low standards on membership -- If you drink beer or even if you write some form of Notes code your are a shoe in to be accepted).  Contributions can include ideas, enhancement requests, code contributions, rolling up your sleeves and building the code, or just telling us what we are doing wrong.
No RatingsRatings 0

Domino Framework 1.0 Released

Peter Presnell |   | Tags:  .dominoframework | Comments (0)  |  Visits (1,407)
.Domino Framework 1.0 has been released on OpenNTF under the Apache License (which basically means anyone can use the code for whatever they want).  This project was thirteen years in the making.  It contains a collection of tools, code, and information to assist Lotus Notes developers build Notes applications.

Resources:
.Domino Framework Project (Download)
.Domino Framework Wiki
.Domino Framewrok Web Site
.Domino Framework Blog
.Domino Framework Community

Points of Note:
  1. The framework is not an application template.  It is a component library.  Copy/paste the needed components from the template based upon your own application's needs.  A separate application template will be release soon with core components likely to be used in building a new application.
  2. Application code is separated into a presentation layer and a business logic layer.
    1. The presentation layer is targeted at Notes 6.0+ and contains forms, views etc. to support generic functionality common to many Notes applications.
    2. The business logic layer consists of a collections of LotusScript libraries containing 100+ classes that can be used directly or extended by your own applications.
  3. The framework is specifically designed for Object Oriented Programmers but much of the code be adapted/used by procedural programmers.
  4. The framework has been designed to allow you or your organization to customize and/or extend.
  5. The focus of the framework has been Notes client development.  There is some stuff there for Web development but not a whole lot.
  6. The framework is the basis for EVERY notes application I have created or significantly enhanced over the past two years.  I estimate its use makes me almost twice as fast developing Notes applications.
What is the significance of a 1.0 release?
  1. A number of beta releases were made available as a way of testing the water as well as allow other Notes developers to make use of the code sooner.
  2. Like many 1.0 releases it is going to have issues.  Much of the code has been tested in production applications.  There are still parts that were started but never finished and/or fully tested.  I have left this code there because it may still be of value to others.  Over time I would like to think I will get the chance to finish these parts off in later releases.
  3. I no longer have the need to focus on Notes 6 development.  All my Domino Designer clients are now either 8.5.0 or 8.5.1 (beta).  I wanted to publish this initial release with code that would run on every version of Notes from 6.0+.  I may never get a chance to go back and finish it.
Brief History
I started collecting code for .Domino Framework in 1996 when I first started doing LotusScript programming.  Before that I had kept to forms, views, agents and @formulas (yeah I was one of those Notes developers!).  I had a research and knowledge management background and quickly collected and stored lots of stuff to help me while I was learning.  I soon had so many code samples, samples databases, and bookmarks to Web sites etc. it was getting hard to find specific code as I needed it.  This was slowing me down.  So I started to build a Notes database I called "Code Central" to hold all this stuff.

During the Dark days of Notes 7 and IBM Workplace I thought it was a smart career choice to move away from Notes.  I was presented with a great chance managing a team of C# and .Net developers.  This is where I learnt to understand and appreciate the power of OOP.  I was particularly impressed with Microsoft's .Net Framework and how it took VB.Net (a language very much like LotusScipt) and took it a whole new level.

Two years ago I found myself back doing Notes development.  IBM seemed to be interested in Notes again (yeah).    Only now I was convinced OOP represented the future and I needed a framework to elevate  LotusScript and my productivity.  IBM didn't seem to be doing much with LotusScript (boo)  So, for the past two years I have rewritten Code Central from the ground up as an OOP framework.

Contributions
My many inspirations for the .Domino Framework come from hundreds of people in the yellowverse that published code or ideas into the public domain.  Unfortunately due to the way the code was developed I lost details about the original sources for a lot of the stuff I had collected.  Sorry, I never intended to share this...  I have since written almost every line of code in the framework myself to suit an OOP style and to ensure the general style and my own best practices are implemented.  Where I can I have tried to identify sources of the original code or ideas upon which it was based.  Please,please, please... if you see anything in the framework that you feel you may have played a role in at some time please let me know.  It is not my intention to lay claim to anyone else's ideas and I will happily acknowledge your contribution.  Even if I never saw your code I don't mind acknowledging your work..  As I have said, I believe I have painfully written each line of the code eventually implemented., but just in case, let me know.

I do want to acknowledge several people who did not participate directly in this project but have provided signifcant  indirect contributions (in alphabetical order).

Ben Poole: Ben was kind enough to provide me with an early 1.2 beta of his OpenNTF DominiWki project.  I have modified some of Ben's code to suit my own needs but the credit for all the code in the .Domino Framewok Wiki  belongs to Ben and his great project.  (Note to self: I need to share with Ben some of the changes I made).

Chris Blatnik is one of the Notes UI gurus.  I have tried to follow his many ideas.  Its not great but the .Domino Framework is distinctly less ugly than the original Code Store.

Damian Katz did much of the early pioneering work on accessing design elements from LotusScript.  I studied this code carefully before building my own solution.

Jake Howlett: has been one of the largest contributors of code to the Notes community via has codestore.net site.  I have followed this site and blogs closely for ideas and information on how to solve common Notes problems.

Julian Robichaux:  I decided to replaced my own error logging solution with Julian's OpenNTF OpenLog project.   In my early days I used Julains nsftools site a lot for examples of LotusScript code I could use.  I have also incorporated Julian's LS2HTML applet as a developer tool within the .Domino Framework.

Nathan Freeman and the entire Lotus911 team have consistently developed pioneering work in the Notes arena and I have tried where I can to incorporate some of their ideas in the framework.  Nathan, Tim, Kevin et al have read my stuff and frequently comment on my work and crazy ideas.  Lotus911 also provide the bleedyellow blog site and Lotus Connections community I have been using for this project.  Much appreciated guys.

Finally to all those I have not mentioned I would like to thank the entire yellowverse and your willingness to share code and provide comments and feedback to my own blog.  These have all been a big help in improving my own limited understanding of Notes development.  Even you Java guys!!.  I still have a long way to go but I am hoping by publishing this framework I can provide something back to the community as a small thanks for the help I have received these past 13 years in making me a better Notes developer.  There has been a lot of yellow blood spilt over this project... Please enjoy.
No RatingsRatings 0

Jump to page of 7
Skip to main content link. Accesskey S
IBM Lotus Connections Help Tools About