Latest Updates

Products & Applications

Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.

Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.

For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!

Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!

xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.

Community & Resources

Lotus Technical Information & Education Community

The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.

OpenNTF.org - Open Source Community for Lotus Notes Domino

OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.

developerWorks Lotus : Wikis

Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.

IBM XPages: A game-changer for Lotus Notes Domino application developers

08/28/2012 01:13:00 PM by Chris Toohey

I reached out via on Twitter, on Facebook, on Google+, and even on LinkedIn asked "What is your favorite thing about developing with IBM XPages?"... and I got great feedback.

Some responded by picking a particular feature or functionality (the most common being the Repeat Control), while most love the freedom that the addition to the IBM Lotus Notes Domino platform brings. For me, it's something different. I'll explain.

On a recent project, I needed to create an event management feature. From a given event listing, a user might want to "Add this Event to My Events".

Typical traditional "Lotus Notes" ways to do this range from creating a copy of the event information in a new NotesDocument (MyEvent vs. Event, if you will) to [shudder] adding the user's name to an "attending" NotesItem on the Event. Even the best of techniques is tinged with a sense of hackery.

If I had to do this in traditional Lotus Notes, I would create a "pin" NotesDocument, which would be a response to the given Event NotesDocument. This "pin" would contain the following NotesItems:

NotesItem Value
$Ref UniversalID of the Event (parent/child relationship)
author @UserName() of the person creating the "pin".
user target @UserName()
status "Attending|1","Not Attending|0"

So the idea here is pretty simple. A "pin" can either be initiated by an "Event Chair" or from the actual user. When the user adds their own "Add this Event to My Events", author and user is set to @UserName() and the status is automatically set to "Attending|1". When the "Event Chair" invites people, they'll have the option to choose whether they're want to attend or not attend.

An added bonus to this technique is to allow you to track who is attending and who is not... and the "Event Chair" can follow-up with them accordingly.

The two scenarios where I'll need to display "My Events" as a user is 1) a list of events that I'm "attending", and 2) the ability to edit my "pin" and say whether I'm attending an event or not. In both scenarios, clicking on the "pin" should take me to the actual Event.

So I'd want to display these via an embedded view on, let's say, a Form that I'm using as a dashboard. Thing is, the "pin" doesn't have Event information. As a view cannot create a data join between two sources (the "pin" and the "event"), I would not go with an embedded view but opt for some Computed Text and use @DBColumns/@DBLookups.... but now I've lost the ability to click-to-launch UNLESS I throw away the Computed Text and use a Computed Field which I could highlight as pass-thru HTML, render pass-thru HTML in the Notes client, and now use a friggin HTML Anchor/link to launch the "Event" NotesDocument via a Notes Client URL (notes://killmenow/events.nsf/{UniversalID}... because if I launched the "pin" NotesDocument I'd have to throw some PostOpen LotusScript that got a handle on the parent "Event" and open it, while still keeping a handle on the "pin" NotesUIDocument so I could close it. The screen'll flicker like all hell, but it'll work...

Well. Screw. That.

<ul class="events">
    <xp:repeat
        var="thisEvent">
        <xp:this.value><![CDATA[#{javascript:var db = new Array(@DbName()[0], preferences['db_events']);
var result = @DbLookup(db,'pinlookup',key,3);
return result;}]]></xp:this.value>
        <xc:tile_event>
            <xc:this.configuration>
                <xc:configuration
                    targetID="#{thisEvent}"
                    type="list">
                </xc:configuration>
            </xc:this.configuration>
        </xc:tile_event>
    </xp:repeat>
</ul>

My Events 'list' xc:tile_event.xsp Custom Control Example My Events 'list' xc:tile_event.xsp Custom Control Example

Using an XPages Repeat Control, I can simply rock my @DbLookup() to get a handle on all of my "pin" NotesDocuments, and pass the $Ref through to a Custom Control that I've written that handles displaying an Event. In the above example, I also pass through the "type" that I want to display. If I changed that to "miniform", you wouldn't just get an event title and timestamp, but you'd also get "Attend this Event" "Ignore this Event" buttons which directly update the given "pin" NotesDocument while displaying live data from the "Event" NotesDocument.

Alternately, I could tell it to use the type "minicard":

My Events 'minicard' xc:tile_event.xsp Custom Control Example My Events 'minicard' xc:tile_event.xsp Custom Control Example

This option, which is used on the "events" views, is really slick: it will check to see if you're already attending and suppress the "Add to My Events" button while also displaying a real-time count of all people "attending" the given event.

The point is, what I love about XPages is that I'm no longer bound by the ridiculous limitations or hacks-around-said-limitations of traditional "Lotus Notes" development. Does "traditional" Lotus Notes development have it's place? ABSOLUTELY! My Junction Lite app is the perfect example of a Lotus Notes Client utility app that would quite frankly SUCK as an XPages-based solution.

Conclusion

I quite frankly got really angry remembering how difficult it used to be writing something like the "events" facility using "traditional" methods... and I'm certain the shift in tone (which I'll keep in this article/editorial) resonates with a lot of IBM Lotus Notes Domino application developers that spend more and more time working with XPages.

Sure, there's an absolute learning curve. There are a lot of tactics and learned behaviors that almost have to be completely abandoned in order to get the most out of XPages. There are also some things that quite frankly just don't make sense.

But at the end of the day, I can now spin out a solid solution that meets business logic needs while enveloping the user experience expectations that users have today in a fraction of the time it would take me to develop the same application if I were to be bound by the platform limitations that traditional development can bring.

We have this amazing set of tools. Learn how to use them all. If you're not currently learning XPages, you'd better get started. If you need help, just let me know!

 
Patrick KwintenName:Patrick KwintenWebsite:http://quintessens.wordpress.comComment I wonder how many room there is left for Notes besides platforms like Connections or (uhum) Sharepoint. They take a lot of air away from Notes, which becomes more a platform for individual solutions.

I would rather see (or had expected) XPages appear within Connections, that platform seems to have a good future nowadays.

What opinion do you have on this?
John TurnbowName:John TurnbowComment @Patrick - My sentiments exactly.  IBM seems to have thrown away the Domino/Xpage/Notes developer... Some very MAJOR companies have plans to move away from Notes.  Not integrating Notes in a seamless manner and giving a seamless integration "pattern" (yes will be development required) is a big MISS for IBM. Chris TooheyName:Chris TooheyWebsite:http://www.dominoguru.com/Comment

I've often wondered if I shouldn't start a kickstarter for an XPages-based IBM Connections -- with the idea that the project ultimately be open sources on OpenNTF.org. It was 1) to address a very real need for social collaborative tools within the platform that was sold as a collaborative applications platform and 2) quite frankly, I want to see how a kickstarter-fueled project would work out. The kickstarter involvement would be so I could get some of the best of the best on-task and actually pay them for their contributions vs. "hey, when you get a second...".

Perhaps some day I'll do it -- just too busy working on an XPages + Connections project to even consider such a thing.

Steve in NYCName:Steve in NYCComment @Patrick & John - I feel your pain.  Here, at the United Nations, we just set up Connections, however, we are moving away from client and web based Notes  applications.  They are being summarily replaced by Sharepoint, Siebel, Livelink and Lord knows what.  The view here is that IBM is pushing Connections, and that Notes is "old" and out of favor from IBM  (Honestly, speaking to some IBM people, they say the same).  Some people seem surprised that I'm still working in Notes.

Since upper level management here doesn't feel that Notes is a good platform to build applications, there are people who want to move from Notes to Exchange in the near future, much like UNICEF did.

We have a big Lotus Notes development shop in Vienna, and they even presented some nice applications to upper level management, but they just feel that there's no future in Notes.  I guess we shall see...

Steve in NYC
AtinName:AtinComment
Please join the below LinkedIn group.

This group is unique in the sense that it put up XPages Objective questions and we can ask questions and discuss on those question.

http://www.linkedin.com/groups/Online-Xpages-Training-3920928

(not published)




Evaluate this Formula: @LowerCase(@Text("FOO"))