Back in my days of Notes Application development
at Iris, when we were first developing Web-based Domino applications with
LotusScript, the general feeling was that they were too slow. We
never felt that we could improve the performance except by trial and error.
Countless hours were spent changing field names, view names, form names,
any design element name to the latest company "standard."
By far, one of the most frustrating
issues the Iris template team faced was how a team of developers could
work on the same Notes application at the same time. We were quite
jealous of the core Notes developers and their fancy source code control
system. They could easily pinpoint when a change was made, what the change
was, and then easily roll that change out. They also had a plethora of
tools to choose from, for performance tuning, unit testing and coding standards.
Obviously the rest of the Notes application
development community was also sharing the pain of the core Notes developers,
because in 1996, Teamstudio came along with their initial set of tools
to help the poor frustrated Notes developer get a little more sleep. Teamstudio
seemed to have a tool for every pain point, so why didn't our Notes application
development team use them? We were aware of Teamstudio CIAO!, but always
felt that we couldn't use it because it wouldn't work with new design elements,
or with any modifications which may have been made to existing elements.
However, in hindsight, we could have used it for our maintenance stream.
We could have also used other tools,
such as Teamstudio Analyzer, to create a snapshot of templates which had
shipped. We could have used the reporting mechanism of Teamstudio Delta
for creating a list of differences in our templates between releases, which
could have showed what we had fixed. And Teamstudio Profiler could have
been used to show us the things we *shouldn't* have been doing with LotusScript...
Obviously, I could go on and on here,
and we all know that hindsight is 20/20. But my point is that the Notes
community needs to be a bit more adventurous when seeking out tools that
could help get the job done. Instead of making excuses about why tools
won't work, I encourage everyone to try them. They may not fit your needs
perfectly, but they may save you enough time and money to justify their
expense. And finally, when you find something you like, spread the word!
How about right now: What's your favorite Teamstudio tool?
O
Category :
Have you ever heard an independent Notes
consultant complaining about the quality or lack of options for implementation,
configuration and training with the latest release of Notes or other Lotus
products? It's almost like hearing a farmer saying, "It's too
bad, there's a lot of corn out there that needs to be harvested this year."
This always strikes me as funny, because
I'd think that would be cause for rejoicing. After all, it only means more
work for them!
A consultant I've known for years has
a different and more refreshing perspective on this situation: He says
that the day IBM Lotus releases an absolutely perfect product that's easy
to configure and understand is the day he is out of business. He's happy
when Lotus releases a new version, and he's confident that they will continue
to do so. In fact, he's counting on them to help fund his kids' college
education - and they're currently in grade school!
This is not unusual in the IT world.
There are bigger software companies out there that release products that
do not meet customer expectations - but this is exactly why consultants
are out there, making money.
Teamstudio has been in the Notes business
for many years, and we've made our living by filling functionality gaps
in the Lotus products and assisting customers with automating difficult
development and administrative tasks. In recent years, we've seen the market
shrink, mainly because of the centralization of development and administrative
efforts by our clients - and of course, the changes in the overall global
economic situation. We've come to see the consulting area as an opportunity
to round out our portfolio of offerings in order to provide our customers
with more complete solutions to their issues.
Using our unique tool set as the basis
for providing technology enhanced services to automate mundane tasks, we've
defined many service offerings on both the development and administrative
side of the house, We've also opened up the opportunity to partner with
some consultants in the Notes world, in order to help them automate tasks
and make it easier for them to provide their customers with complete solutions.
In other words, we can help make harvesting
all that corn faster and easier!
O
Category :
I've been experimenting with debugging
Java in Agents, Java Script Libraries, and XPages directly in DDE using
the Eclipse debugger and remote debugging. Since I haven't seen
much on the topic, I thought I'd post what I've learned here, in case it's
of use, and out of curiosity if others had tips to share.
Ever since Java was introduced to Notes
we've been without an integrated debugger for Java. I'm sure I'm
not the only one who hoped we'd finally see it in Domino Designer in Eclipse
(DDE). True, the Eclipse/Expeditor foundation of DDE includes the
Eclipse Java debugger, but to date we still have no easy way to launch
it to debug Java in the context of a Notes database.
(
read more...)
Read More
O
Category :
XPages are now becoming the way that developers
are writing and extending apps to the Web and beyond. One of the (many)
quirks I've found, which cost me several hours, was the ‘visibility’
property for each control.
Generally, there are two reasons for
using this property on controls. The first is to show or hide a control,
depending on who is logged in and using the application. For example; an
approval button may only show up for managers, not general users.
This can be achieved by entering something
similar to the following code in the ‘computed’ value for the visibility
property:
var roles:Array = database.queryAccessRoles(session.getEffectiveUserNAme());
@IsMember(“ole, roles);
The other main reason is to hide or
show a control, depending on the input from another control. For example;
a text box displaying when a option for a combo box is selected, or if
a check box is checked.
In this case, I would create a comb
box with some options, such as ‘approve’, ‘approve with comments’,
‘deny’ and ‘deny with comments’, and uncheck the visibility box
of the text box. Then, I'd write some code in the event handler for the
combo box (or check box, or button, or whatever) to display the text box
control when appropriate.
However… this does not work! The text
box never appears on the page (no matter how many times I select different
options ;-))
After thinking this was a problem with
my event handler code - I tried to set several properties, visible=true,
rendered=true, etc.- I was about to give in and try a different method.
Instead, I decided to look at the source code for the control and found
the following:
<xp:inputText id=”inputText” rendered=”false”></xp:
inputText >
Aha…. What’s this??? “rendered=false”!!!!
The light bulb above my head went on!
‘Rendered’ is not the same as ‘visible’!
No matter what you do, the web page will never be able to show this control,
as it is never rendered at run time.
Metaphorically speaking: If I don't
see a car coming while I'm crossing the street and it hits me, I get killed.
Although the car is not visible, it's still there, and it still hits me
- I just didn't see it.
For Xpages to dynamically display controls,
or contents within control containers, the web page has to use Javascript
in the event handler and round trip to the server. Therefore, the following
code entered in the onchange event of the combo box is one way to
achieve this:
var
cBox:javax.faces.component.UIComponent = getComponent("comboBox");
var
option= cBox.getValue();
var
textBox:javax.faces.component.UIComponent = getComponent("inputText");
if
((option == "approve
with comments") || (option
== "deny with
comments"))
textBox.setRendered(true);
else
textBox.setRendered(false);
For the scenario in which you require
hidden fields, there is a control that is, for some ironic reason, hidden.
You can access it in the Preferences menu of Designer 8.5.1, and you can
bind this to any field in your Notes documents, just as you would with
other types of controls.
O
Category :
A customer recently asked me that question
were waiting for his Notes client to finish crashing and restarting. His
favorite was 6.5.8.
For me, the correct answer is: All of
them! I don't know if I could name my favorite, but I do know the
release I couldn't wait to get - Release 3. To me, this release greatly
expanded the automation of applications over what was possible in Release
2. Release 2 seemed like discussion databases with notifications
(think Sharepoint without the security or offline operation, only 18 years
earlier).
How about you? What was your favorite
release?
O
Category :