Display Statistics for !!HELP!! On The Web

Last week I got a phone call from Richard Hogan of 6w Systems. Richard asked if I would like to add functionality to !!HELP!! to create charts, graphs or even dashboards. Hence I receive a lot of questions about the statistics in !HELP!!, I was glad to hear that 6w Systems offer an easy to use solution to achieve the aim.

ddCharts - Create Charts For !!HELP!!

ddCharts, which is 100% Notes, allows Notes developers & administrators to easily, and quickly, create drill down charts / graphs / dashboards of live Notes data. There is no data export and charts always display the latest data. You can click on a chart to drill down, and even into Notes documents (if enabled).

ddcharts It can be used as a standalone db, or one can use the DDchart object with Lotusscript to create one’s own charts.

To allow ddCharts to chart the information in !!Help!! would only require the creation of one or two views for the !!HELP!! db, and then creating the chart definition documents (these are simply Notes documents in a ddCharts db, and they store the name of the data db, name of view, and chart settings, etc).

ddCharts is neither Open Source nor it is free of charge but a (single server-) license is available at a very fair rate.


jXLS – Excel Reports from XLS templates

A common requirement for many reporting applications is to provide the ability to export reports to Microsoft Excel format. This can be challenging for a number of reasons, including:

  • Most reporting engines require the use of a report design tool to develop reports.
  • Reports designed to be exported to PDF or HTML do not always translate well to XLS format.
  • Advanced Excel functionality such as complex forumlas, macros, and charts are not always available through the reporting engines.
jXLS - Excel Reports from XLS templates

jXLS is an open source Java library that greatly simplies this process by providing the ability to use XLS templates as the basis for generating reports in Excel format.
You only need a few lines of code to generate the output … And ( this my favourite ), you do not need to have MS Excel installed on the machine running the code.


public class JavaAgent extends AgentBase {

public void NotesMain() {
try {

Session session = getSession();
AgentContext agentContext = session.getAgentContext();

List staff = new ArrayList();
staff.add(new Employee("Derek", 35, 3000, 0.30));
staff.add(new Employee("Elsa", 28, 1500, 0.15));
staff.add(new Employee("Oleg", 32, 2300, 0.25));
staff.add(new Employee("Neil", 34, 2500, 0.00));
staff.add(new Employee("Maria", 34, 1700, 0.15));
staff.add(new Employee("John", 35, 2800, 0.20));
staff.add(new Employee("Leonid", 29, 1700, 0.20));
Map beans = new HashMap();
beans.put("employee", staff);
XLSTransformer transformer = new XLSTransformer();
transformer.transformXLS("c:\\in.xls", beans, "c:\\out.xls");

} catch (Exception ex) {
ex.printStackTrace();
}
}
}


openCOD the OpenNTF-ish open source Blackberry site

openCOD
openCOD is an open source initiative for BlackBerry handheld applications and the wide variety of backend systems you might want to extract data from or update using a BlackBerry handset. Members of openCOD get together to share their ideas, expertise and enthusiasm to create BlackBerry applications and games and release the source code for others to download and use.

[via Bruce Elgort, Taking Notes]


S.I.S.C – Single Instance Space Calculator

S.I.S.C = Single Instance Space Calculator. Jo mei, wos ‘n des ??

S.I.S.C ist ein Instrument basierend auf Lotus Notes, MS SQL-Server und MS-Access zur Berechnung des Speicherverbrauchs redundanter Attachments.

Wozu braucht man das ?

Wir beschäftigen uns zur Zeit mit der Frage, wie viel Speicherplatz auf unseren NotesServern frei wird, wenn jedes Attachment nur noch ein einziges Mal vorhanden ist.
Im Moment sind ja die Attachments durch Mails an eine Gruppe oder mehrfache Weiterleitung oder Antwort n -fach in der Maildatei eines oder mehrerer User vorhanden.

Intelligente Systeme zur Auslagerung von Attachments oder Archivierung von Mails legen diese redundanten Attachments nur einmal ab und referenzieren jeweils auf diese “single instance” eines Attachments.

Die Fragen, die einem dabei im Kopf herumschwirren sind:

– Ist das mit der mehrfachen Speicherung wirklich sooooooooo dramatisch ? und
– wie zum Teufel soll ich das denn nun wieder so bauen, daÃ? es auch der oberste Oberindianer versteht ?

Herausgekommen ist S.I.S.C. Oberindianer interessieren sich wahrscheinlich nur für die rot eingerahmte Zahl.

SELECT Round ( Sum( Multiplikation.Ersparnis ) /1024000000,2 ) & " GB" AS Ersparnis_Gesamt
FROM Multiplikation;
Single Instance Space Calculator

Um die anfallenden Datenmengen zu handhaben, werkelt im Hintergrund ein SQL-Server. Bei kleineren Unternehmen kommt man wohl auch mit MS-Access als Datenspeicher aus. Ich benutze MS-Access der Einfachheit halber für die Auswertung der erfassten Daten.

Die Ermittlung der Daten erfolgt über Lotus Script in Verbindung mit einer für die Hashwertbestimmung entwickelten DLL.

Declare Function GetHash Lib "filehash" (_
Byval strFileName As String,_
Byval intAlgorithm As Integer,_
Byval intFormat As Integer,_
Byval intOperation As Integer,_
Byval intSHA2Strength As Integer)_
As String

'//  Algorithm
Const  CRC32 = 1
Const GOSTHASH = 2
Const MD2 = 3
Const MD4 = 4
Const MD5 = 5
Const SHA1 = 6
Const SHA2 = 7

'// Formatting options
Const LOWERCASE_NOSPACES = 1
Const LOWERCASE_SPACES = 2
Const UPPERCASE_NOSPACES = 3
Const UPPERCASE_SPACES = 4

'// SHA2_STRENGTH
Const SHA2_STRENGTH_128 = 128
Const SHA2_STRENGTH_256 = 256
Const SHA2_STRENGTH_512 = 512

'// Definitions of some kind
Const STRING_HASH = 1
Const  FILE_HASH = 2

...
hash = GetHash (fNAME, SHA2, UPPERCASE_NOSPACES, FILE_HASH, SHA2_STRENGTH_128)

Die Daten werden bis auf ein paar statistische Daten zu den einzelnen Datenbanken anonym erfasst. Es sind keinerlei Rückschlüsse möglich, wer denn nun welches Attachment doppelt und dreifach in seiner Maildatenbank vohält. Datenschützer dürfen also aufatmen.

Ich werde an dieser Stelle weiter über die Entwicklung dieses Projekt berichten. Da das Know How möglicherweise für Consultants im Bereich DMS nützlich sein könnte, nehme ich Abstand davon, die relevanten Teile hier in allen Einzelheiten zu beschreiben und das Gesamtprojekt zum kostenlosen Download anzubieten.

Sollte Interesse bestehen, kann man jederzeit mit mir Kontakt per mail oder auch telefonisch aufnehmen.


Coming Soon

New Escalation EngineA new version of !!HELP!! is coming soon. ( V. 1.5.1 )

I guess we will release the new version in two weeks from now on. Thomas added a lot of new functions and bug fixes.

I myself totally redesigned the escalation engine. The whole set of design elements for the escalation engine will be available for download as soon as !!HELP!! 1.5.1 has been released.

You then can use the engine in your own applications.

A handful of design elements will enable your application to send ( multi lingual ) notifications about escalated documents. New Options

Thomas Schulte today released the first version of !!DRIVER!! on OpenNTF.org. !!DRIVER!! is one of a bunch of databases to work together with !!HELP!!. There will be a !!SYSTEM!! db in the very next future.

based on the work done for !!HELP!!, !!SYSTEM!! targets the soft and hardware inventory parts of a companies helpdesk. It is multilanguage enabled the same way !!Help!! is and shares some of the basic functions as EscalationHandling or configurable InputValidation or configurable menues
With this database you can
– inventarize all your computer systems.
– create new systems based on systemtemplates
– create systemtemplates based on an active system
– add or remove single components to a system while the system is active
– have systems as active systems or systems in store
– link systems to one or more people or department based on a defineable connection to any notes database where your organisation structure resides (to get a decent booking solution later on)

In summary you can catch the whole lifecycle of systems you use in your database.

And we will introduce !!HEUREKA!!; the Knowledge- and Solution database for !!HELP!!.

There’ll be a lot of things to SnT; not only on Thursday …


Are you using !!HELP!! ?

then please subscribe to the list below and let us know, how many user are working with !!HELP!!. If you like to give us a feedback, feel free to do so 🙂

Atelier Goldner Schnitt GmbH, Versandhandel, 600 User contact: Entwickler

Sanyko Pharma GmbH, Pharmaindustrie, 300 User

Pickenpack – Hussmann & Hahn Seafood GmbH, Lebensmittelherst., 150 User Kontakt

WITTE Velbert GmbH & Co.KG, Automobilzulieferer.

Mainland Information Systems IT Company, 30 User

MDK in Bayern,Dienstleistungsunternehmen, 1000 User

ELVIA Travel Insurance Austria Insurance, 80 User, contact: IT Manager

Plenexis Satellitenkommunikation Kommunikationsunternehmen, 100 User

pharma mall Gesellschaft für E-Commerce mbH, 20 User

Stahl-Zentrum Duesseldorf Stahl-Zentrum Duesseldorf

Universitätsklinikum Bonn Universitätsklinikum Bonn KIS-Support, 2500 User, Kontakt

Hermann Maier Spedition KG, Transport und Logistik, Singen, 120 User

DKSH Schweiz AG, Zuerich, 150 User


!!HELP!! – RBOD problem fixed

When using !!HELP!!, sooner or later a red box will pop-up on your display.

After a lot of try and error it seems that I finally found a solution.

We use the following code to switch betwen the framesets

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

@SetTargetFrame(“_top”) ( intoduced in Notes R5 ) obviously is responsible for the crash.

I tried to substitute @SetTargetFrame(“_top”); and found that @Command([CloseWindow]); ( introduced in R6 ) does the same job; with a little side effect ;-). The database has to be the last in the database switcher … This is logic; a workaround and to be serious, I dunno like workarounds. So, I had to find another solution.

For what ever reason I tried the following formula:

_defaultNewFrame := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "AlwaysOpenNewNavigationFrame" ; 2;[FailSilent] ));
@If(_defaultnewFrame!="YES";
@Do(
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"));
@Command([OpenFrameset]; "FS-CLOSEDTICKETS"))

And what shall I say; this seems to be the solution. No RBODs anymore 😉

To avoid an RBOD when switching the language, you have to replace the existing code in the OUT-LANGUAGE outline with the code below

REM { find users language };
_defaultLang := _defaultLang := @UpperCase(@DbLookup( "" : "NoCache" ; "":"" ; "($LUConfig)" ; "LANGUAGE" ; 2 ));
_view:="($LULANG)";
_foundlanguages := @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
_userlanguage :=@If(@ClientType="Web";
@UpperCase(@LanguagePreference([Region]))[1];
@If(@Environment("HDLang")="";@UpperCase(@LanguagePreference([Content]));@Environment("HDLang")));
_language:=@If(@IsMember(_userlanguage;_foundlanguages);_userlanguage;_defaultlang);

REM { find label };
_key:="outDlgLang";
_label := @Implode(@DbLookup( "" : "NoCache" ; "":"" ; "($LULANGTYPE)" ;_language + "~outline";"typestring");";");
_val:=@Right(_LABEL; _key + "=");
REM { find all possible languages };
_LANGUAGE:="**": @Unique(@DbColumn("Notes" : "NoCache"; "" : ""; _view; 1));
REM {select a new language or delete the entry from notes.ini if "**" is selected};
_NEWLANG:=@Prompt([OkCancelCombo];
@Word(@Word(_val;";";1);"~";1);
@Word(@Word(_val;";";1);"~";2);
@Environment("HDLang"); _LANGUAGE);
REM { Set the environment variable };
@If(_NEWLANG = "**";@Environment("HDLang"; "");@Environment("HDLang"; @UpperCase(_NEWLANG)));
@SetTargetFrame("_top");
@Command([CloseWindow]);
@Command([OpenFrameset];"FS-MAIN")

Is this worth to tell IBM about ?

UPDATE:

According to Damien Katz there is possibly a bug in the frameset window title formula

“Stack traces from rip files are a little unreliable,
but the best I can tell is that its crashing in a frameset window title formula, but I can’t tell why.
Try removing that formula and see what happens. On second look, it could be any frameset formula, not necessary a window title one.”


ReAttach – Attachment nach Bearbeitung wieder anhängen

Des Öfteren stehen die User vor dem Problem, ein Attachment bearbeiten zu müssen und an einen anderen User weiterleiten zu mssen.
Lotus Notes in den Versionen 4 und 5 bietet hier leider nur die Möglichkeit, den Anhang zu detachen, mit der entsprechenden Anwendung zu öffnen und nach der Modifikation wieder an das Dokument anzuhängen.

Die Lotus Script Klasse clsAttachment erledigt dies in einer einzigen Aktion. Die Einbindung ist kinderleicht. Legen sie das Arbeitsberzeichnis und das Feld fest, das die Anhänge enthält.

Sub Click(Source As Button)

  Dim workdir as String
  Dim rtField as String
  Dim A As New Attachment
  workdir = "c:\temp"
  rtField = "Body"

  Call A.Modify ( workdir , rtField )

End Sub

Bei mehreren Anhängen erfolgt die Auswahl des zu bearbeitenden Anhangs komfortabel durch ein PopUp Menue. Nach Auswahl des Anhangs wird dieser mit der entsprechenden Anwendung geöffnet. (getestet unter 4.6.x ( unter 4.5 nur mit Modifikationen lauffähig ), 5.x mit Windows 9x / NT4 SP 6a / 2000 und Office 97 / 2000 )

DOWNLOAD