Archive for category: Development

Documentation changes in M33.74

Categories: Cronacle, Development, RedwoodScript - Tags: ,

This week i investigated a new Cronacle release (M33.74) for a customer. I extracted the documentation from the redwood.platform.zip file.
I was used to the documentation set, listed below. As you see, the API documentation was separated guide compared to the other guides.

Documentation changes in M33.74

API documentation guide moved

My first impression of the documentation was: The API documentatie Guide” is gone!“. From Redwood Support I got the information that the “API Documention” is moved to “Cronacle Development Guide”. See below the index of M33.74.
Documentation changes in M33.74

New Search functionality

A great improvement on documentation is the search functionality. In previous versions you had to gess in with documentation you could find a particular search item. Now you can search in the current guide (or in all guides) for a particular search item. In the example below, I searched on 2 items (defaultrunasuser, runasuser).
Documentation changes in M33.74

Cygwin: Unix scripts op windows met Cronacle8

Categories: Cronacle, Development - Tags:

Cygwin: Unix scripts op windows met Cronacle8

Mijn Cronacle8 omgeving draai ik op het Windows 7 platform. Voor het kunnen testen van Cronacle scripts, gebaseerd op Unix shell scripting, heb ik Cygwin geïnstalleerd. Dit artikel beschrijft de installatie, configuratie en het gebruik ervan, in combinatie met Cronacle 8.

Cygwin

Cygwin is een verzameling van Unix commando’s, die op de meeste versies van Microsoft Windows te draaien. Deze zijn gebaseerd op de POSIX standaard en worden volgens het opensource (GNU) principe ter beschikking gesteld. De eerste versie werd gebouwd in 1995 door het bedrijf “Cygnus Solutions”. In 1999 is dit bedrijf overgenomen door “Red Hat”.

Installatie

Het installeren en upgraden van cygwin geschied m.b.v. een setup.exe, die via de website gevonden kan worden. De standaard installatie is wat minimaal, bestaande uit een bash shell en een aantal “core utilities” voor het bewerken van bestanden en een aantal standaard Unix commando’s.

Cygwin: Unix scripts op windows met Cronacle8
Men kan additionele packages, naar gelang de behoefte, installeren. Via het zelfde setup.exe programma kan dit gespecificeerd worden.

Configuratie

Om er voor te zorgen dat de executables van de cygwin distributie gevonden kunnen worden, moet de PATH instelling goed gezet worden. Dit gaat via:
Start -> Computer -> Computer (rechtermuis klik) -> properties -> advanced system settings -> Environment variables

Cygwin: Unix scripts op windows met Cronacle8
Voeg dus toe: c:\cygwin;c\cygwin\bin

Het is bekend dat bij sommige windows computers je de foutmelding “/Cygwin-Terminal.ico was not found” kunt krijgen, bij het opstarten van de shortcut “cygwin terminal” van het bureraublad. Dit is eenvouydig op te lossen door de properties van de shortcut aan te passen. De commanod regel (target) moet zijn: C:\cygwin\bin\mintty.exe
Daarna kan de “cywin terminal” gestart worden.
Cygwin: Unix scripts op windows met Cronacle8

Zo, cygwin werkt nu naar behoren en kunnen we met Cronacle aan de slag.

My first shell script on Windows

Cronacle 7 gebruikers zijn bekend met zogenaamde runners (o.a. run_KSH, run_BASH, run_PERL), die gebruikt worden om een job agent te starten van een bepaalt scripttype. Deze runners staan in de directory $JCS_HOME/bin. In Cronacle8 zijn de runners opgeslagen in de repository en niet 1-2-3 goed zichtbaar. Voor de Cronacle 8 gebruiker is het goed om te weten:

  • “het concept is het zelfde gebleven…”.
  • Er is een runner in Cronacle8, die een een het BASH scripts ondersteund op het Windows platform!

Het volgende test script heeft naar behoren gedraaid in mijn Cronacle8 omgeving!
Cygwin: Unix scripts op windows met Cronacle8

De bijbehorende output:
Cygwin: Unix scripts op windows met Cronacle8

Samenvatting

Dit artikel laat zien hoe eenvoudig je shell scripts kunt draaien, op het Windows platform, in combinatie met Cronacle8. Het is een eerste aanzet. Er zijn nog configuratie verbeteringen mogelijk, zoals: het gebruik van POXIS padnamen ipv Win32 padnamen ( C:\Program Files (x86)\Redwood\ …. -> /cygdrive/c/Program Files (x86)/Redwood/…. ).

Cygwin is mijn inziens een goede keuze als men:

  • Unix scripts wilt ontwikkelen op het Windows platform.
  • Wilt standaardiseren met “Job Definition Types” (Scripttype genoemd in Cronacle7).

Cronacle ontwikkelstandaarden

Categories: Cronacle, Cronacle7, Development

Cronacle ontwikkelstandaarden

Bij veel klanten waar ik kom, wordt gesproken over het nut van “Cronacle ontwikkelstandaarden”. In dit artikel geef ik aandacht aan dit onderwerp.

Is het de moeite waard om ontwikkelstandaarden op te stellen?

Als het onderwerp “ontwikkel standaarden” besproken wordt, komt de hierboven staande vraag altijd als eerste naar voren. Ook hier geld het Nederlandse spreekwoord: “De kosten gaan voor de baten uit”.

Waarom ontwikkelstandaarden?

Software ontwikkeling heeft een life cycle. Ongeacht welke methode er wordt gehanteerd, kunnen de volgende fasen onderkend worden: ontwerp, bouw, testen, bugfixes, nieuwe functionaliteit toevoegen. Je wilt dit proces beheersbaar houden. Zeker als dit proces met meerdere ontwikkelaars tegelijkertijd uitgevoerd worden.

De hoofdreden om ontwikkelstandaarden te hebben binnen een bedrijf is: Maak de onderhoudbaarheid van mijn software beter.

Het niet invoeren van ontwikkelstandaarden kan ook een gevaar opleveren. Er ontstaat een informele werkwijze, waarbij de sterkste persoonlijkheid op de ontwikkelafdeling het gat vult van het ontbreken van standaarden en zijn/haar eigen werkwijze gaat prediken.

Doelstelling ontwikkel standaarden

  • Verbeter onderhoudbaarheid van code
  • kwaliteitsverbetering:
  • Ontwikkel snelheid:
  • Samenwerking:
  • Minder fouten:
  • Inwerk periode korter:

Ontwikkel standaarden zijn niet statisch. Het moet voor ieder lid van het ontwikkelteam helder zijn hoe standaarden tot stand komen en hoe deze onderhouden worden. Beschrijf een heldere procedure, waar nieuwe voorstellen respectievelijk wijzigingen besproken kunnen worden.

Waarom voer je een code review uit?

Als je ontwikkelstandaarden opzet, moeten er ook momenten inbouwd worden (reviews) om de naleving van standaarden te controleren.

Een aantal redenen waarom je reviews uitvoert, zijn hier op een rijtje gezet:

  • Vroegtijdig fouten vinden
  • Reviews zijn vaak meer kosten effectief dan testen.
  • Een manier van coaching/training/leerproces. Voornamelijk voor nieuwe medewerkers.
  • Kennis overdracht naar team leden
  • Maakt het mogelijk dat de ene ontwikkelaar de code van een ander kan onderhouden.
  • Verbeter de kwaliteit van de code
  • Afdwingen van ontwikkelstandaarden

Cronacle standaarden

Ook bij de ontwikkeling van Cronacle code is het opzetten van standaarden en richtlijnen raadzaam. Bij meerdere klanten zijn we betrokken geweest bij het opstellen.
Enkele voorbeelden die je kunt verwerken in Cronacle standaarden zijn:

  • Installatie en configuratie afspraken binnen het gehele ICT landschap.
  • Naamgeving van objecten, zodat de herkenbaarheid van de objecten beter wordt. Naamgeving kan ook ondersteunend zijn bij de tooling om objecten te selecteren i.v.m. het selecteren en opleveren in een ontwikkelstraat.
  • Beschrijven van de “Do’s and Don’t” rondom Cronacle ontwikkeling.

Heeft u behoefte aan standaarden en reviews dan zijn we graag bereid U van dienst te zijn bij de invoering daar van.

Overzicht van parameters en constraints

Categories: Development

Na het bouwen van jobchains en/of scripts kun je de kwaliteit van de parameters en constraints controleren met de volgende query. In de query worden alle jobchains en scripts van een bepaalde applicatie, in dit voorbeeld ABC_DEF, gepresenteerd.

select  a.owner, a.name
, b.parameter_id, b.parameter_name
, b.data_default, b.data_type
, b.data_length, b.groupname
, c.name constraint_name, c.constraint_id
, d.message_text, d.search_condition
from    jcs_scripts                   a
,       jcs_script_parameters         b
,       jcs_script_constraint_columns c
,       jcs_script_constraints        d
where   a.application_name  = 'ABC_DEF'
and     a.script_id         = b.script_id
and     b.parameter_id      < 1000
and     b.script_id         = c.script_id (+)
and     c.script_id         = d.script_id(+)
and     c.constraint_id     = d.constraint_id (+)
and     b.parameter_id      = c.parameter_id (+); 

Drop filter

Categories: Cronacle7, Development - Tags: ,

Deze week een beheer issue bij de hand gehad m.b.t. een “monitoring filter”. Een Cronacle gebruiker had een eigen filter geschreven. Na het aanklikken van het filter duurde het meer dan 1 uur voordat er jobs getoond werden.

Analyse

Via een aparte SQL sessie heb ik de repository geraadpleegd welke “where clause” definities er waren voor filters. De betreffende where conditie heb ik aan een explain plan onderworpen. Er was voor een kolom gekozen, welke niet geïndexeerd was, waardoor het filter een full table scan deed op de repository view JCS_JOBS.


Een nieuw filter bouwen, gebaseerd op andere kolommen die wel geïndexeerd zijn, is dan een oplossing.

Verwijderen oude filter

Normaliter kan men een filter verwijderen door:
- filter selecteren
- rechter muis knop
- “delete” selecteren
Echter bij het selecteren van het filter wordt eerst de detail informatie opgehaald.
Daar wil ik nu geen uur op wachten…..

Verwijderen filter via Redwood Shell

Het filter kan ook verwijderd worden via de Redwood Shell. Hierbij kan gebruik gemaakt worden van het jcs_registry pacakge. Filter informatie ligt opgeslagen via registry instellingen. Met de volgende query kan men de “key waarde” van een betreffend filter terugvinden, welke we nodig hebben om het filter te kunnen verwijderen.

select key_id, name, private
from   sysjcs.rs_all_registry_keys
where  parent_key_id in ( select key_id from sysjcs.rs_all_registry_keys where name='Filters' )
and    jcs_registry.key_path(key_id) like '%/Monitor/Jobs/Filters/%';

Een voorbeeld van de output is:

KEY_ID NAME PRIVATE
5520 PL_TEST_DROP_FILTER Y

Na het opstarten van een Redwood Shell (RS), kan men het volgende commando geven:

begin
  jcs_registry.drop_key(key_id=>5520, recursive=>'Y');
end;
UA-37767730-1