|
I am just about to hit the button and submit my first assignment at Xpages kindergarten. Yes, my first Pages application is about to be release into production! The assignment is developed using what I call "green code". It takes an existing application developed using Classic Notes (yellow code) and combines it with Xpages (blue code) to produce a hybrid solution (green code) that combines the capabilities of Classic Notes and Xpages in a single application. Until the features, reliability, and possibly performace, of xpages matures I expect many of my initial xpage assignments will be green.
|
Ratings
0
|
|
Yeay... its Friday. Its been a long hard week on my tiny speck of the yellowverse, so I thought I would unwind by contributing a definition for the many terms often thrown around within the Lotus Notes community.
Yellowverse The yellowverse comprises those people who have cause to use the Domino Designer or Domino Administrator clients.
Yellow Core The yellow core is that part of the yellowverse for whom the use of Domino Designer or Domino Administrator forms a dominant part of their day. These people have a vested interest in success of Lotus Notes because it directly leads to how much food they get to put on the table each night (and how far down the plane they have to sit when travelling to lotusphere)
Yellow Blob The yellow blob represents the 99% of the yellowverse who choose to live outside the yellow bubble (see below). The yellow blob has two major tribes. The larger tribe are those that favour the use of the Domino Designer client. The smaller tribe are those devoted to the use the Domino Administrator client. Despite being the smaller group, the administrators were all born with yellow stars on their belly and hence some often consider themselves vastly superior to the developers. They are the ones that usually control the relationship with the great blue oracle and usually get to decide what version of Lotus Notes the developers will be allowed to work with at any time. Because some administrators also use the designer client from time to time they often feel they can speak on behalf of the developers.
Beeps The sound you constantly hear driving anywhere in Cairo. It is also the name given to a group of yellow companies who focus on providing products and services to the yelowverse. Sometimes referred to as Business Partners, LBPs or just BPs. Beeps are different because within beeps it is usually the developers that are born with yellow stars on their bellys.
Yellow Bubble This is a relatively small group (~1,000) within the yellowverse who tend to make the most noise. They blog and tweet and attend any technical conference that ends with LUG or sphere. The yellow bubble is a largely a sealed complainer and highly reflective. Those inside looking out often see a reflection of themselves and incorrectly assume the yellow blob is made up of people entirely the same as themselves.
The yellow bubble gather regularly at 4 strategically placed water coolers to drink the yellow kool-aid. These water coolers are called Planet Lotus, OpenNTF, IdeaJam, and Bleedyellow. Planet Lotus is the yellow bubbles' equivalent of Hyde Park's speaker corner where people stand on yellow soap boxes and speak about all manner of Notes related issues to anyone who cares to listen. OpenNTF is where the yellow architects and heavy duty builders of all things yellow gather. They often work on community projects to contruct yellow homes for those less fortunate within the yellowverse. The yellow bubble constantly posts instant polls at ideajam about how to make the yellowverse even more yellow in the hope the great blue oracle will listen. And finally, for those that feel the need to slash their wrists and share the pain, there is bleedyellow.com.
Each year the yellow bubble rewards contributions to the community by offering speaker slots at the annual lotusphere conference or the chance to sit and blog the opening session from prominently placed yellow bean bags.
Yellow Council Within the yellow bubble there is a small group of people elected to high office to represent the yellowverserse. These people get to sit on committees at OpenNTF. They also get to participate as design partners where they sit down and discuss with the great blue oracle about future plans to expand the yellowverse. The yellow council is made up almost exclusively of beeps. As with any group of politicians they are constantly bickering about trivial issues such as whether or not the standard unit of measure should be based upon the metric system or not or whether everyone in the yellowverse should be required to add two lumps of sugar to their morning coffee.
Blueverse Outside the yellowverse there is a parallel universe know as the blueverse. This universe uses development products based almost exclusively upon Java and Eclipse. At times the yellowverse feels threatened by the blue universe as they see them as wanting to turn their own yellowverse blue.
Lotus Attack Kittens Like UFOs these fabled creatures are often reported as having been sited but their true existence has never been fully verified. These creatures are reported to appear whenever a member of the yellowverse strays from the rules handed down by the great blue oracle.
Please feel free to add you own contributions or correct any errors made in this analysis.
|
Ratings
0
|
When you look closely within the yellowverse it is not hard to find individuals and companies that are making an absolutely HUGE contribution to our community. There are times when these people/companies attract praise. And sadly there are also times when we seem inclined to take the smallest of blemishes and blow them into major dramas. Inspired by recent blogs by David Leedy, Eric Mack, jonvon and others, I would like to take time out to express my profound gratitude to two companies that in my opinion demonstrate the right sort of stuff we need in the yellowverse. Companies that not only excel in the products and services they produce but also in terms of the contributions they and their employees put back into our community. These two great companies are Elguji and Lotus911.
In some ways these two comapnies are very diiferent. Lotus911 excels in Lotus Notes services, whilst Elguji are rapidly establishing themselves as one of the leading providers of Lotus Notes based products. But in many ways these two great companies share a lot in common. Both companies are winners of the prestigous Beacon Awards for 2008 (Lotus911) and 2009
(Elguji). Both companies have some of the sharpest minds in the Notes development community. Tim Tripcony (Lotus911) and Matt White (Elguji) are probably two of the few people who have reached guru status with the new Xpages technology. But where both these companies truly excel is the contributions they are making to our Notes community. Bruce Elgort (Elguji) was a Co-Founder of OpenNTF.org, one of the best notes community resources we have. Elguji have kindly provided our community with an idea sharing resource at ideajam.net. Lotus911 have made a major contribution to the Notes community with their bleedyellow.com web site which offers a Lotus Connections service free of charge to the entire Notes community. This site also provides free access to a range of Lotus911's products such as sqawk and Crowded Wisdom. If that is not enough Bruce seems to somehow find time to put even more back into the Notes community through the Taking Notes podcasts and the 1352 Report. Nathan T Freeman (Lotus911) probably needs no introduction as he has a high profile in the yellowverse - rivalled perhaps only by Ed Brill. He has regularly shared amazing code and ideas that push the boundaries of Notes, the latest being the bones project. Both companies were founding members on the new OpenNTF committee. All of those already mentioned are major contibutors the the blog scene, as are Scott Hooks, Chris Whisonant, and Kevin Pettitt. These people are also contributing projects to OpenNTF, adding useful comments to many blogs, and providing answers on discussion forums. Both companies are also design partners, taking time to represent our needs with IBM in designing Notes future directions and evaluating early betas. I also know that these people also take time out of their schedules to respond to queries from many in the Notes community. Even to XPage newbies like me.
I know for a fact many of these people (if not all) are working absolutely crazy hours. Usually the time they are taking to contribute to the Notes community is over and above long hours they are required to work at their respective companies. So in addition to showing respect for the wonderfull contribution these (and so many others in the yellowverse) are making, lets please also cut these people some slack from time to time. These people are human and must be pushing the boundaries of how much can get done in a day. Its hard to imagine how these people still find time for some sort of a personal life. Well I am guessing they do Actually, I know some do (Congratulations Bruce and Gayle on your 3rd wedding anniversary). Its hard to imagine how these people remain sane (perhaps they don't always) The Notes community is so much the better for all your efforts. Thank you, thank you, thank you.
So these two companies and the great folk in them are some of my heros. Who are yours? And have you taken time out recently to remind them of why their contributions really matter?
|
Ratings
0
|
I have participated in two separate migrations to Notes 8.5. One from 8.0 and the other from 6.0. Before migrating, thorough testing has been requested for the core Notes client functionality (Mail, calendar etc.) and detailed testing of existing applications. This testing consumes a LOT of time. One aspect of testing that was not a focus for either migration was testing of Domino Designer. I have done a lot of migrations over the years. It seems that unless you are a Lotus Business Partner, Notes developers are simply not a key focus for Notes/Domino migrations. As long as the client and the applications run then who cares, right? For any Notes developers out there in the planning stages of a Notes 8.5 migration let me strongly recommend including in that plan a process that will allow for the testing of the new development environment. While it is release 8.5.0 for Notes, this is really release 1.0.0 for Domino Designer for Eclipse. Ideally this evaluation should be done BEFORE a decision is made by your organization to migrate to 8.5.0. DDE has the feel of two products in one. The new XPages, Custom Controls, Themes, and even the CSS editor all seem to exploit the Eclipse platform. The remaining design elements that existed prior to 8.5 seem to be a force fit into the Eclipse environment in which a few aspects now behave like Eclipse while other aspects behave like the old Domino Designer. And from what I can tell IBM still need some convincing that it would be worth their while to change the editors for these design elements to behave more like Eclipse. So we have to deal with two interfaces inside one.
I guess because the old designer is somehow trying to run inside the new designer I am seeing a wide range of issues occurring, issues that can have a significant impact of developer productivity. I am presently on break from Xpages kindergarten and doing a lot of classic Notes development, but now using DDE. So far I have identified and logged (internally) 40+ separate issues with Domino Designer. Now I expected my productivity levels to fall while learning XPages, I was not expecting to also be hit with a productivity drop for classic Notes design. Over the past few weeks my productivity level for classic Notes has fallen by ~ 30%. This can be attributed to:-
- Learning the new DDE interface (a drag on my productivity that will go away quickly)
- Logging issues as I encounter them.
- Instability with clients. Issues with DDE itself and the impact it seems to have on the Notes client typically result in me restarting Notes 4-5 times a day. The total restart time for my workstation is about 10 minutes for both clients so I am losing as much as an hour a day with this. Note: To close the clients correctly you actually have to wait a few minutes after the Notes screen disappears before restarting. if you don't then Notes will failt to load and you have to log off and quite likely have a slower restart due to consistency chacks. I am not sure how you're supposed to tell when Notes has stopped running!
- LotusScript simply does not play nicely with DDE. New issues are appearing with code that was running fine with Notes 6.0. Periodically LS libraries now stop working and I have to find and recompile these modules (I think it's sun spots). And the worst one of all is that the LS debugger is often rendered ineffective. Not only can the LS debugger cause side effects of its own, but I am seeing a lot of LS error messages of the type "Generic LSE Failure". With these errors the debugger does not show which module the error is occuring in, which line of code it is at, or even the contents of the variables. This makes debugging a nightmare. It was so much fatser to diagnose and fix "Object Variable not set at line 59 in module Initialize".
I am not saying don't migrate to 8.5.0! The migration to 8.5 has many benefits outside of Domino Designer, and you also get access to XPages with 8.5.0. What I am suggesting is that before you get too far down the migration path, do some thorough testing of DDE. This can be challenging. It was only really when I started using DDE full-time that I encountered many of these issues. Playing around with Xpages or opening and closing design elements etc. is often not enough. DDE 8.5.0 is certainly not impossible to work with but it does take a lot of patience and the need to refine your development process to work around these issues (e.g. always close designer before swithcing Notes IDs). And you certainly should over-estimate your upcoming development projects to factor in the potential loss of productivity> IBM will hopefully resolve some of these issues soon. Hopefully with 8.5.1 when some of the productivity loses can be offset by the shiny new LotusScript editor.
|
Ratings
0
|
In a previous blog, I commented on the fun I have been having with Notes 8.5.0 getting my LotusScript code to reliably tell me the current view or document using NotesUIWorkSpace. Today I can share another one of the quirks with Notes 8.5.0 that is slowing me down as a Notes developer....
It seems that somewhere between Notes 6.0.4 and Notes 8.5.0 the LotusScript debugger stopped stepping through the code contained in the Initialize module of LotusScript libraries. When the debugger is on and the error is in the Initialize module the debugger comes up with absolutely no information at all. There are no objects listed, no events, no source code, no variable information.
The only way I have found so far to debug this code is to take the code out of Initialize and place it in an agent that does a Use on the LotusScript Library. If you have nested LotusScript Libraries, some detective work may be required to find which Initialize event has the problem.
I am not sure if this is related, but the error messages I was receiving were not teh traditional LotusScript errors I have ever seen in the past. The error I got was "Type mismatch in method CoerStrToNum: STRING found, NULL expected". This was the cool new way Notes 8.5 was telling me I was trying to call a method with two parameters when only one parameter was provided.
|
Ratings
0
|
This may be just Kindergarten but our teacher gave us a pretty lengthy required reading list to work on now and for later when we continue on to first grade.. Apparently those of us intending to focus on developing XPages for the Notes client when 8.5.1 is release have been instructed to use the same reading list until we are told to do otherwise... Those people who have already done a lot of Web development will probably have a lot of these already. Notes client developers have a LOT of reading to do... Kindergarten
- HTML - XPages provides a number of great controls but there is still a lot missing. Those gaps will often be plugged with you own HTML. When debugging XPage output it will be essential to be able to read HTML. A book that explains the differences in the way modern browsers interpret HTML would be especially useful. There are many on-line resources that can also be used.
- JavaScript - The native JavaScript language is used extensively to script client events. This same language also provides the basic syntax for server sided JavaScript (SSJS). Most of your code is going to be JavaScript based, so a mastery of this language is required.
- Dojo - Dojo is the javascript library (framework) that comes with Domino 8.5 and is used as part of XPages. Dojo extends the capabilities of JavaScript as a language as well as providing a range of widgets (dijits) that can add even more WOW to your XPage applications. Unfortunately IBM provide very little documentation about Dojo in the Domino Designer help so a reference book is almost essential to get the most out of this technology.
- CSS - Styling of your applications should largely be achieved through CSS. This language is an art in itself and something each Notes developer needs to develop a thorough understanding if they wish to make their XPage applications attractive and reduce some of the cross-browser issues. A text that also explains themes would be beneficial as themes are also supported by XPages.
- Xpages - Only joking! There are no books to be found on XPages. The oinline help that comes with Domino Designer will leave you underwelmed. There are a lot of blogs that give very good coverage on your options for Xpages. These include Declans life, the universe,and everything Xpage tutorial, The Domino Developers wiki, theXpages wiki, and the Xpages Blog. And don't miss David Leedy's great Notes At Nine videos. Lets just hope a book gets written soon as this topic is very large and it is impossible to see have its millions of components can be coeverded in depth by anything less than a 500 Kg reference book.
- SSJS - I have no idea where you may go to get a good understanding about SSJS. A good knowledge of JavaScript is a start as well as a good working knowledge of Commands and either the COM or LotusScript product classes (NotesDocument etc). Tim Tripcony as Lotus911 seems to know about as much about SSJS as anyone, so watch his blog closely for tips etc.
1st Grade
- AJAX: XPages makes use of XJAX technology to facilitate asynchronous calls to the server for things such as partial refreshes. In your 2nd year of XPage applications you may want to build a better understanding of AJAX to embark on bullding more advanced controls and functionality.
- XML A some stage soon after graduating from kindergarten you are likely to be building applications in which data will be passed between data using XML. A good working knowledge of XML and related technologies such as XPath and XSLT will be helpful. Remember, at some stage soon XPages will probably allow you to define data sources that draw data from XML files directly.
- JAVA: It seems to me that every time you have to dive off and do anything advanced with SSJS you end up making calls to Java or using instructions that look a lot like Java. Having a good working knowledge of Java is going to help you out. e.g. The process of invoking a Web service seems to rely on using some Java-specific components.
Note: No specific text books were prescribed. It was suggested we use
Amazon or similar resources to find popular texts. In time I may get more specific about resources you may want to consider. For now just find a reasonably good text on each subject. Readers please feel
free to comment on good choices that are above the pack or especially relevant to
Notes/Domino...
For Dojo I can recommend the book - Dojo - The Definitive Guide by Matthew Russell (O'Reilly)
Happy Reading everyone....
|
Ratings
0
|
|
I have been having lots of fun the past 3 weeks using Domino Design 8.5.0. There are LOTS of issues. There is one in particular I would like to bring to the attention of Notes Developers who use LotusScript heavily and have already or will soon migrate to 8.5.0.
It seems in the world of Eclipse the NotesUIWorkspace class no longer be relied upon in the same way it could in the past. In particular the CurrentView and CurrentDocument properties of this class can be totally unpredictable. When you use the Notes 8.5 client (especially with Designer running) you will often see the screen flicker, move around, or randomly switch between the Designer client and the Notes client. I have even seen a minimized Designer client reappear on the screen for no apparent reason. Yes, my client is officially haunted!! I am guessing this relates to the way the Notes client interacts with Eclipse and that certain background tasks trigger parts of the clents temporarily gaining focus. If this occurs at the same time as a piece of LotusScript code is using NotesUIWorkspace to gain access to the current view or document then you might end up with nothing, or a reference to something totally unexpected. These errors are random and very hard to reproduce. An application will test occy 99 times and then fail the 100th time with the same test script.
If you have the LotusScript debugger running it gets much worse. The debugger seems to make the NotesUIWorkspace lose all sense of where it was at the time the LS code was invoked. e.g. LotusScript code inside a view action whose first line of code is Dim UIW as New NotesUIWorkspace now has no knowledge of the CurrentView.
The end result of all this is that code that runs without the LS debugger running no longer runs when the debbugger is running. So if you are trying to debug LS code you may find your code breaks well before you get to the bit you are debugging.
The only workaround I have found so far is to try and redesign the code in a way that information about the current NotesUIView or NotuesUIDocument are stored in a variable that is global to the form or view as part of a QueryOpen or similar event that passes in a reference to the source object. This may not always be possible. In that case you may find yourself like me reverting back to print and dialogbox statements as a very primitive alternative to the LS debugger.
|
Ratings
0
|
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
|
Ratings
0
|
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
|
Ratings
0
|
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.
|
Ratings
0
|
I have often asked myself similar questions? At one of my previous clients an audit was done on Notes applications and it was found that there were 70,000 Notes databases! This led everyone to start asking - where the **** did all these applications come from? During my 16+ years involvement with Lotus Notes I have observed the following key sources for Notes applications:- - Non-IT Solutions: My biggest beef with IT departments has been that we often make it harder, rather than easier, for people to get applications developed/enhanced. The response to this is typically universal - finding a way to do it themselves. (that's how I started doing Notes) So when a business process becomes too large or complex to be handled manually or via MS Office, Notes often provides a way for an enterprising business professional to automate that process. This is based upon the speed with which a Notes application can evolve, the relative simplicity of its programming model, and the absolute ease in which Notes applications can be deployed (including security and replication). These are usually the most common form of Notes applications (in sheer numbers). Many of these applications I never get to see as a Notes developer. Those that I do are usually because there is a need for a change that cannot be implemented by the inventor. Often because they are no longer in that role. These applications are highly effective but often not the prettiest, most efficient, or best engineered solutions. The dark forces that often line up against Notes use these examples to paint a picture of Notes as an inferior application development platform without truly understanding the unique nature and characteristics of such applications. I am sure Java programs would look/behave just as bad if non-programmers could ever figure out how to use Java!
- RAD: One of the key reasons I get asked as a Notes developer to build a new Notes application is the speed with which the solution can be built and significantly lower cost structure this entails. This is perhaps best demonstrated by one IT project which was intending to replace a series of existing Notes applications with a new Java/Oracle application. As is often the case, design alternatives were requested and a Notes alternative outlined. The proposed Java approach would cost over $1 million. The Notes alternative was costed at less than $250K. A greater focus on cost reduction helped sway that decision to the obvious solution - build it in Notes.
- Building A Brand: Once a particular business area has one or more professionally built Notes applications the customer is more inclined to specifically request future needs be met by Notes-based solutions or they direct their requests to the Notes development team that have been so responsive in the past. The only time these requests seem to be intercepted is when the project is big enough or strategic enough to gain senior management attention or the organizational structure is one in which a direct superior of the Notes development group does not (yet) bleed yellow. Many Domino Web applications seem to get developed because of this predisposition to use Notes and/or a Notes development team.
- Simply Too Expensive To Replace: I have never yet had the pleasure of working in an IT department in which Notes was considered strategic. (That would be a dream contract). But despite the efforts of many non-believers, Notes applications continue to flourish because of the above. Too often it is simply too expensive to replace existing Notes applications with a "strategic" alternative. e.g. I once was involved with the support of a Notes application that started as (1), became a (2) before evolving to a (3). The database had grown to over 1 million records presenting a few challenges on the performance side. When I was first asked to do some performance tuning for this application the brief I was given was to give the application legs for a few more months as it was being replaced. Four years later I left that contract without seeing that application replaced. The project to replace the application had become a huge money pit. As the business needs constantly changed we were able to quickly enhance the Notes application while the alternative (C#/SQL Server) simply couldn't keep up with the changes. It was too big and was never completed.
There are other reasons but I believe the above account for the majority of Notes applications that get built. What you do not see there is Notes applications being chosen as part of a deliberate long term strategy or because Notes had specific features and capabilities that alternatives did not. They were chosen largely because they were quick, low-cost, and very effective. To me this is what makes Notes Application development yellow and differentiates it from most other products. It is this aspect of Notes I am hoping we don't loose in the efforts by big blue to align its products. Just as we are starting to realize that our long term future on this planet will require us reverse some of our non-green habits there is a risk that by becoming too blue and less yellow we may also cause an imbalance in the Notes eco-system.
|
Ratings
0
|
|
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.
|
Ratings
0
|
If you are contemplating XPages development, already started, or interested in how to build applications in which Xpages form a component there is a great new OpenNTF project just launched. The project will extend one of the most used Notes templates, the Discussion template. The project is being sponsored by IBM and hence will provide members of the yellowverse with the unique chance to work with some of the best Notes application developers at IBM (Niklas Heidloff and Steve Castledine). I am sending in my enrollment form as this seems like it may develop into one of the best Xpages Kindergartens going around. This is an opportunity too good to miss! If you don't have the time to attend, visit the discussion area and post a few ideas as potential homework assignments for the new kindergaten students. See you in class!
|
Ratings
0
|
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
|