<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/rss20.xsl" media="screen"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://slate.blogspirit.com/my_work/index.rss" rel="self" type="application/rss+xml" />
<title>Slate - my_work</title>
<description>Rolling Ideas</description>
<link>http://slate.blogspirit.com/my_work/</link>
<lastBuildDate>Thu, 12 Jul 2007 09:12:21 +0400</lastBuildDate>
<generator>blogSpirit.com</generator>
<copyright>All Rights Reserved</copyright>
<item>
<guid isPermaLink="true">http://slate.blogspirit.com/archive/2005/06/07/making_code_work.html</guid>
<title>Making Code Work</title>
<link>http://slate.blogspirit.com/archive/2005/06/07/making_code_work.html</link>
<author>noreply@blogspirit.com (Subhan SATOPAY)</author>
<category>Lotus</category>
<category>Musings</category>
<category>My Work</category>
<pubDate>Tue, 07 Jun 2005 20:12:59 +0400</pubDate>
<description>
Last so many days were spent on Code Review and Unit Testing for my current project application. I see Code Review as a very important &amp; fruitful exercise. It helps removing many bugs by just following code and those which may not come up in testing, as Test Cases are not always exhaustive for each and every condition. By doing a code review you can mentally test each programming constructs and paths.&lt;br /&gt;&lt;br /&gt;Testing brings to surface some very peculiar issues and which makes you hate LN (my project is still for R5). Lotus free form structure for storage is a boon as well as a bane. While it helps rapid development without the need to bother about relational constraints and data structure normalization, but this sometimes leads to issues when Data Integrity is of concern. The behavior of various NotesObjects and their methods which are based on the FT Index are unpredictable unlike RDBMS where you are assured of a consistent implementation. Index update delays or In-memory objects statuses can lead you to bang your head against the Screen figuring out the problem reasons.&lt;br /&gt;&lt;br /&gt;So here I have lot of my code using NotesView.getDocumentByKey methods to put basic referential integrity among related data. Yeah a RDBMS would have been a best option here, but as pointed out in the earlier post - &lt;a href=&quot;http://slate.blogspirit.com/archive/2005/05/29/code_works.html&quot; target=&quot;_blank&quot;&gt;Code Works&lt;/a&gt;, one of the objective was to reuse the in-place setup of Lotus Workflow/Notes and thus minimize investment costs.&lt;br /&gt;&lt;br /&gt;Now we have checks at various places to not allow data duplication if those records with matching keywords exist. This works in ideal situations, situations where after every document delete/update you give Notes sufficient time to update its Index or cache or whatever it is. But our test cases failed when we deleted document and immediately in the same session created new records. So our hidden views, used by getDocumentByKey are not getting immediately refreshed. Even closing all application windows won't work. So is this Indexing problem? Tweaking any View/DB property won't help. And when we restart Notes after deleting documents, the validation works. So is this Notes client cache problem? But these methods don't have any &quot;Nocache&quot; attribute. &lt;br /&gt;&lt;br /&gt;Trial and error and we used NotesDatabase.search for these checks instead of NotesView.getDocumentByKey and this works for any kind of monkey-usage of the application. And we had no problem here with View Index or cache or whatever it is. But theres issue of App. performance using this method. &lt;a href=&quot;http://lono.blogspirit.com&quot; target=&quot;_blank&quot;&gt;Ashish&lt;/a&gt; suggested of using NotesView.Refresh before invoking the getDocument methods. Now this method is suppose to update your NotesView objects with the datastore image during the same code process, so any further modifications/reference has access to the current document copies/count. But in my case I am performing a process, close &amp; restart my application and then deleting/updating some documents manually to create Test conditions and again running the code process to repeat the earlier action. This ideally means all my variables/objects are destroyed &amp; recreated - an if recreated then they are suppose to be representing the latest datastore state.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://slate.blogspirit.com/images/medium_code1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://slate.blogspirit.com/images/medium_code1.jpg&quot; alt=&quot;medium_code1.jpg&quot; style=&quot;border-width: 0; margin: 0.7em 0;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;But it worked. A combination of NotesView.refresh and NotesView.getDocumentbykey gives you the current state of data. So this was a case of in-memory objects getting cached for the session. But why can't we have application session which destroys all in-memory objects as soon as when application is out of scope without having to restart Notes or doing manual Object destroy.
</description>
</item>
<item>
<guid isPermaLink="true">http://slate.blogspirit.com/archive/2005/05/29/code_works.html</guid>
<title>Code Works</title>
<link>http://slate.blogspirit.com/archive/2005/05/29/code_works.html</link>
<author>noreply@blogspirit.com (Subhan SATOPAY)</author>
<category>Musings</category>
<category>My Work</category>
<pubDate>Sun, 29 May 2005 10:42:33 +0400</pubDate>
<description>
This would be the first of many posts to come, which I intend to put on the blog about my current work assignments. (I hope I do keep this resolution.)&lt;br /&gt;&lt;br /&gt;For last 3 weeks I am involved in building an HRMS module which would enable a new online workflow in my organization. And of course the workflow and its related features will be built on Lotus Softwares. Though the complete solution is not pure Lotus and it involves an HR ERP built on Sybase/Powerbuilder as the main system. This Lotus based workflow is a subsystem which is tightly integrated with the Sybase backend. For the Lotus part we are using Lotus Workflow, Lotus Connectors and Notes.&lt;br /&gt;&lt;br /&gt;The functionalities which are on Lotus Software will be used by a user base of 4000, though the transactions will be handled for 15000 employees, which include a large number of those who don't have access to PC/Lotus.&lt;br /&gt;&lt;br /&gt;The objective of building this module on Lotus was to minimize the license requirements for Sybase and the organization can reuse their existing Lotus platform. Thus the users won't have direct connection with Sybase database.&lt;br /&gt;&lt;br /&gt;This workflow is governed by a complex and huge number of Rules and Parameters, based on the group to which the employee belongs too. The workflow and the functionality on the Lotus are based on these Rules/Parameters, which are generated and stored in Sybase.&lt;br /&gt;&lt;br /&gt;That's where the design challenge for this system is involved, but after 3 weeks of intense development the Application is taking shape and ready to be tested. Its really a Joy to see the code works.
</description>
</item>
</channel>
</rss>