Note: this post has been migrated from another blog. Some links may be broken.
You may have read my post about bugs and problems with composite applications in Notes 8. I got many responses to it and I had many talks with IBMers about it.
So the good news here is: IBM listens and people were very eager to help. Yesterday I tried to continue some work with Composite Apps for our upcoming YouAtNotes CRM release. And boy, was I frustrated. Again 🙁
My problem yesterday was that I did some work with sidebar components on my iMac (with Domino Designer in a VM) at home some days ago, I replicated the changes to our office server. Yesterday I replicated the changes to my Notebook and wanted to continue the work.
But as I opened the database, the sidebar components were displayed but didn’t do anything at all. Checking the CAE shows that the wiring from a view to the sidebar components was simply GONE. Sigh. So I recreated the wires, but when saving the wiring editor I just got a message that a java null pointer exception occured. Doublesigh.
So that means: when doing wiring work locally on machine A, replicate it to a server, replicate it to machine B, chances are good that the wires are gone. And you even cannot recreate them.
I had to cut & paste the wiring properties and the composite application XML in the database on my iMac (so that they have a newer date than my changes on the Notebook) and replicate them again to the server. Today I opened the application on the server and the wires were ok. I replicated them again to the Notebook, and again there the wires are not present.
I even removed the replica and created a new one – no effect. Yes, when updating to Notes 8.5 from 8.0.2 I removed the data/workspace directory completely.
And yes, I deleted the whole composite app (that means the composite application XML and the wiring properties) from the database and recreated them from scratch after I installed Notes 8.5.
My advice to you: if you want to develop composite apps, do it on the server. Don’t do it locally.
So, here is an update of my problems and what their status are now with Notes 8.5:
New on the list:
a.) Issues with wires for sidebar components when developing locally on machine A, replicating to server, replicating to machine B, working locally on machine B – as described above.
I doubt that the problem is really the replication, I think that the wires are cached somewhere and that Notes uses the cached wires by mistake. I will update this post when I found out more.
UDPATE 29th Jan: this has SPR RHOD7M5EEB, I will create a PMR too to try to get a Hotfix.
b.) I have one CA page with 9 components where 7 components are ordered in tabs. When adding a component to the tabs, it is always placed at the end of the tabs. Even when I move it between other tabs and save the CA, it is still placed at the end of the tabs. The only solution is to remove other components and add them again.
c) Sidebar components are destroying the order in the sidebar when focus changes from CA to another app and back to the CA. This has SPR MQRO7NAC9Q.
Bugs from 8.0.2 and their status in 8.5:
1.) The size of string data for pushing HTML to the managed browser component is limited. That forced me to implement a workaround so that HTML data is written to a temporary file, and instead of pushing HTML to the browser I have to push the URL to that file to the browser.
-> Problem still exists in Notes 8.5, I reported that to as PMR to IBM and they confirmed it is a bug.
2.) PIM components do not work when they are on a CA page which is opened by using a frameset: create a page in the CA editor, put for example a mail view on it, create a frameset in the notes application, connect the frameset with that page, open the frameset and the mail view does not display anything anymore. Or, in 8.5, it displays a view from the notes application, not from your mailfile. There is no usable workaround for that yet.
-> Problem still exists in Notes 8.5, reported as PMR and confirmed, too. Recommended workaround is to use a frameset with the mail inbox inside it. I did not tested that yet.
3.) Caching issues: sometimes after creating new wiring properties, I have to restart Notes so that I can use the properties in the CAE.
-> Problem still exists in Notes 8.5.
4.) Sometimes a component on a CA page is displayed without any properties in the wiring editor. After closing and re-opening the wiring they are displayed ok.
-> Didn’t occured in Notes 8.5 yet.
5.) Using a NSF component with a computed URL: here I compute a Notes URL in a QueryOpen event, save that to a profile document and use that with a @GetProfileField() formula in the com.ibm.notes.ComputedNotesURL property of the component. This works most of the times, but not always. Sometimes a change in the URL is not honored by the component, I need to open the page in the CAE to have the component used the new URL.
And yes, I set com.ibm.notes.ProcessOnlyOnUpdate=false.
-> Seems to be fixed in 8.5
6.) Layout changes are not saved when using the “opening notes documents on pages” feature: first of all, the Wiki page where this feature is explained misses the important information that it is neccessary to have the com.ibm.rcp.useClonePages=true property set in the application properties.
Then I found that when I allow the user to move components on the page around, the changed layout is not saved. So when the user opens the page again, the default layout is used. On other CA pages the layout is saved fine.
-> Problem still exists in 8.5.
UPDATE 30th jan 09: this has SPR CYDG7N3AR2.
7.) PropertyBroker issues when using the “opening notes documents on pages” feature: in those kind of CA pages it is not possible to publish a property via PropertyBroker in the queryOpen or postOpen event of the opened Notes document. The script runs, but the property does not get to the wired component. On the other hand, the same script works fine when placed on a button which is clicked after the document is opened and the CA page is displayed.
-> Problem still exists in 8.5. But in 8.5 a workaround works: put another form on the CA page which publishes data via PropertyBroker in the PostOpen event.
UPDATE 30th jan 09: this has SPR CYDG7N39XR and RHOD7M6EHY. Development believes this is solved by adding the page property com.ibm.notes.enable.preferences = true. I didn’t tested that yet.
8.) When the composite application XML design element has an alias (which is has by default when creating a new, blank composite application), you cannot connect a frameset to a CA page. You have to remove the alias.
-> Problem is confirmed as bug and still exists in Notes 8.5, but in 8.5 a new composite application design element is now created without alias, so that the problem does not occur to the developer until he manually sets an alias.
9.) There is no way to give a component on a CA page a fixed height or width, you always have to use relative layouts. This is bad for example if you have a search bar at the top and some view below it, then you want that the search bar has always a fixed height. But there is no way to do that. So you design your CA page on a big screen, and when the customer opens it on a small screen the layout is broken.
-> Problem is confirmed and still exists in Notes 8.5, but it’s not a problem of the Notes development team. It’s an issue of the underlying Eclipse platform, and the Eclipse project is aware of it. If and when this can be solved is unknown.
10.) When opening wiring from the CA editor and there are wires for missing properties, the bad wires are reported and you have a button to delete those wires. But you can click that button as often as you wish, the wires are not being deleted. You have to delete the whole CA page and re-create it.
-> not tested in 8.5 yet.
Overall impression in 8.5:
The composite application editor has clearly improved in terms of usability and look & feel. And some stuff (like using the com.ibm.notes.ComputedNotesURL) feels stable now. On the other hand, due to issues like a) I don’t trust the whole composite application stuff. I believe if we would roll that out to all our customers we were in severe trouble.
Therefore, we will declare all composite application features as “Beta” and unlock them only for one customer after the other, and everytime under heavy control of our support staff.