Freitag, 1. Juli 2016

Forms 12c - Webutil Konfiguration

Nachdem die Windows VM mit Forms 12c und Reports nun läuft und konfiguriert ist, hat noch ein spannender Teil gefehlt. Die Konfiguration von Webutil, welches doch viele Forms Anwender gerne verwenden. Webutil ermöglicht es den neueren Forms Web Versionen auf den Client des Anwenders zuzugreifen und Client-Funktionalitäten auszuführen, die normalerweise durch die Kobination JRE/Applet unterbunden sind.

Die WebUtil Core Features (alles, was man sonst selbst in Java Beans nachbauen müßte)
  • Text_IO: Read and write text files on the client machine.
  • Tool_Env: Read client side variables
  • C API on the client:  Interface with client side C.
  • Host: Run Host commands on the client machine
  • OLE2:  Integrate with client side OLE (e.g. Word and Excel)
  • Enhanced Host commands: Host command can now call back into Forms!
  • Browser functions: Integrate with the browser.
  • File transfer: Move from between the client, application server and database.
  • Client machine information:  Read information from the client machine
  • READ/WRITE_IMAGE_FILE: Read and write client side images
  • Get_File_Name: Use a file selection dialog on the client machine         
Der größte Teil der Webutil-Funktionalität ist bereits vorkonfiguriert, doch sind noch einige Schritte nach der Forms-Installation durchzuführen. Das wichtigste zuerst; man muß ein Zusatzpaket herunterladen und einbinden jacob.jar (Java COM Bridge). Zu Forms 12c passt die jacob-Version Jacob 1.18-M2, die gibt es hier zum Download. JACOB is a JAVA COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. JACOB runs on x86 and x64 environments supporting 32 bit and 64 bit JVMs.

Enthalten sind hauptsächlich 3 wichtige Dateien:
  • jacob.jar
  • jacob-1.18-M2-x64.dll
  • jacob-1.18-M2-x86.dll
nötige Schritte bei der Konfiguration:
  • Signieren der Datei jacob.jar mit einem gültigen Zertifikat und in das Verzeichnis ORACLE_HOME/forms/java kopieren (dort ist schon die bereits signierte Datei frmwebutil.jar)
  • Kopieren der Datei jacob-1.18-M2-x86.dll in das Verzeichnis ORACLE_HOME/forms/webutil/win32 und jacob-1.18-M2-x64.dll in ORACLE_HOME/forms/webutil/win64
  • bei Bedarf, falls eine C-dll Datei auf dem Client aufgerufen werden soll, Kopie von ffisamp.dll aus dem Demo-Test in den Unterordner ORACLE_HOME/forms/webutil//win32
  • Anpassen der Konfigurationsdatei webutil.cfg
    Darin kann konfiguriert werden, ob Webutil Fehler und Meldungen geloggt werden sollen. Ebenfalls läßt sich ein- und ausschalten, ob der Dateitransfer gestattet ist. Als nächstes läßt sich einstellen, in welches Verzeichnis die benutzten DLL-Files auf den Client kopiert werden. Und es wird konfiguriert, welche DLL's Webutil verwendet. Falls diese nicht in /win32 und/oder /win64 liegen und die angegebene Größe in Bytes nicht zu tatsächlichen Größen passt, gibt es später Fehlermeldungen beim Aufruf der Forms-Anwendung.
  • Einspielen eines Datenbank-Packages webutil_db mit dem Skript (ORACLE_HOME/forms/create_webutil_db.sql) und Erstellen eines Public Synonyms dafür
Hier der Eintrag der Webutil-Beispiel Konfiguration in der formsweb.cfg

# Sample configuration for deploying WebUtil. Note that WebUtil is
# only installed with the Forms Builder and is also available for download
# from OTN.
[webutil]
WebUtilArchive=frmwebutil.jar,jacob.jar
WebUtilLogging=off
WebUtilLoggingDetail=normal
WebUtilErrorMode=Alert
WebUtilDispatchMonitorInterval=5
WebUtilTrustInternal=true
WebUtilMaxTransferSize=16384
baseHTML=webutilbase.htm
baseHTMLjpi=webutiljpi.htm
archive=frmall.jar
lookAndFeel=oracle
form=webutil_demo.fmx

Hat man dies alles getan, ist Webutil fast schon einsatzbereit. Als weitere Forms-Module liefert Oracle eine webutil.pll und webutil.olb mit. Am einfachsten packt man diese 2 Module in das Verzeichnis, dass der Variable FORMS_PATH entspricht und kompiliert die webutil.pll einmal durch und generiert ggf. das webutil.plx.

Zum Testen, ob alles richtig eingestellt ist, liefert Oracle ein Forms webutil_demo.fmb zum Testen, erhältlich unter dem folgenden Link. Damit kann geprüft werden, ob die Webutil-Basis Funktionen richtig laufen.



unter Forms 10g geht die Uhrzeitermittlung noch korrekt



Hinweise / Auffälligkeiten:
Warum die Maske bei der Time Zone Europe/Berlin 18:13 Uhr ausspuckt, obwohl es erst 16:13 Uhr ist, ist mir noch rätselhaft. Was auch unter der Version 12c nicht bei mir funktioniert hat, ist die Demo im Reiter Browser, um eine Message an den Browser zu senden (liegt vielleicht daran, dass keine Statusleiste im Browser ist). Sonst lief die Demo-Version sehr gut bei mir. Hinzukommen können auf Nicht-Windows Umgebungen Fehlermeldungen bei nicht richtig gesetzten Berechtigungen auf Verzeichnissen für den Application Server, damit der Datei-Upload/-download funktioniert.

Nachtrag vom 4.7.2016, dank einer Antwort von Frank Hoffmann via Twitter
Es muss bedingt durch eine Änderung im Forms Patch 12.2.1.1 (change im Time zone Support) in der default.env eine Umgebungsvariable gesetzt werden:
FORMS_DATETIME_LOCAL_TZ=GMT
 
Bis bald wieder sagt
Holger

Dienstag, 21. Juni 2016

Forms 12c - Reports Server erstellen und starten

Heute muss ich direkt wieder Wissen über Forms 12c teilen, bislang war mir der Start eines Reports Servers nicht gelungen. Aber dank fachkundigem Wissen vom Kollegen Jan-Peter Timmermann habe ich es geschafft, dank der Informationen aus der Datei installation-fmw12c-forms-reports-2860049.pdf mit dem Titel "Installation von Oracle Fusion Middleware 12c - Forms & Reports".

Die erforderlichen Steps dafür:

1. der Managed Server WLS_REPORTS ist vorhanden und läuft

2. WLST (Weblogic Scripting Tool) starten und anmelden

3. connect("weblogic","weblogic_password","hostname:7001")
createReportsToolsInstance(instanceName='reptools1', machine='AdminServerMachine')

4. connect("weblogic","weblogic_password","hostname:7001")
createReportsServerInstance(instanceName='rep_server1', machine='AdminServerMachine')

5. Die erzeugten Reports Server werden per Default im abgesicherten Modus angelegt.
Versucht man, auf diese Reports Server zuzugreifen, ist eine Authentifizierung
erforderlich. Das kann man aber abschalten in der Datei rwserver.conf der entsprechenden Reports Server-Komponente durch Auskommentieren einer Zeile.

<!--security id="rwJaznSec" class="oracle.reports.server.RWJAZNSecurity"/-->

6. Nun kann über ein Batch-File der Reports Server gestartet werden (hier in Windows)
<domain_home>\bin\startComponent

startComponent.cmd rep_server1

7. Evtl. kommt noch beim Abfragen des Report-Servers die Fehlermeldung: REP-52262: Diagnostic output is disabled.

Dann muss noch eine Datei rwservlet.properties angepasst und um einen Eintrag ergänzt werden:
 <webcommandaccess>L2</webcommandaccess>

Ergebnis: das Reports Server rep_server1 läuft und kann abgefragt und benutzt werden:
http://hostname:9002/reports/rwservlet/showenv?server=rep_server1

Fazit: mit den Informationen aus der obigen Installationsanweisung und weiteren Quellen aus dem WWW kann relativ einfach unter der Version 12c Reports konfiguriert und gestartet werden. Endlich ist die erste Umgebung in einer Windows-VM komplett.

Viel Erfolg beim weiteren Forschen :-)
Holger

Montag, 6. Juni 2016

Forms mal generisch: alle Items eines Blockes verstecken und wieder einblenden

Dieser Beitrag kommt aus der praktischen Arbeit heraus gerade. Der Kunde hat die Anforderung: fast alle Items eines Datenblockes nach Klick auf einer Checkbox ausblenden und wieder einblenden danach. Da ich mir durchaus vorstellen kann, dass das auch woanders vorkommen könnte, möchte ich meine favorisierte Lösung vorstellen.

Die Lösung dazu ist entweder sehr trivial oder mit ein bisschen mehr Invest auch schöner, dafür aber anspruchsvoller umsetzbar.

Meine 1. Idee (trivialer Ansatz) war: alle Items nacheinander mit ihrem Namen ansprechen und dann ausblenden. Einfacher Ansatz, aber viel Tipperei, evtl. ein Item vergessen und Wiederholungen. Und ich stehe ja mehr auf Wiederverwendbarkeit und generische Ansätze.

Code dafür:
pkg_item.verstecken('BLOCK.ITEM1'); bis pkg_item.verstecken('BLOCK.ITEM32');
Dazu sollten auch alle Eingaben gelöscht werden.
:BLOCK.ITEM1 := NULL;

pkg_item.verstecken('BLOCK.ITEM1'); macht einfach
set_item_property ('BLOCK.ITEM1', visible, property_false);

Nun der generische und schönere Ansatz:
1. merken einiger Felder, die immer sichtbar sein sollen:
          v_currentblockp := 'BLOCK.';
          v_ausnahme_felder := v_currentblockp || 'ITEM12 ';
          v_ausnahme_felder := v_ausnahme_felder || v_currentblockp || 'ITEM13 ';

2. den Block durchgehen und alle Felder ausblenden und ggf mit COPY auf NULL setzen:
      LOOP
         v_currentitem2 := get_item_property(v_currentitem,nextitem);
         v_currentitem:= v_currentblockp || v_currentitem2;
         -- Ausstiegskriterium, wenn Current Item leer ist (also nur der Blockname)
         IF v_currentitem = v_currentblockp THEN
              EXIT;
         END IF;   
        
         -- Item darf nicht in der Ausnahmeliste sein(sonst wird es unsichtbar)
         IF INSTR(v_ausnahme_felder, v_currentitem ) = 0 THEN
           IF GET_ITEM_PROPERTY(v_currentitem,visible)= 'TRUE'  THEN
                  -- Felder leeren
                  IF GET_ITEM_PROPERTY(v_currentitem,ITEM_TYPE) IN
                       ('TEXT ITEM', 'LIST',  'DISPLAY_ITEM') THEN
                       COPY(NULL, v_currentitem);
                  END IF;  
                 
                 -- Felder verstecken (unsichtbar machen)                 
              pkg_item.verstecken(v_currentitem);
           END IF;         
         END IF;
      END LOOP;

3. das Sichtbar machen funktioniert ähnlich mit einer Besonderheit: der Block hat auch Felder, die sollen gar nicht sichtbar werden (Control-Items usw.). Um das Ganze mit einer Logik zu versehen, habe ich mir beim Start der Maske alle Felder gemerkt, die dann auch sichtbar sind und nicht zu meinen o.g. Ausnahmen gehören. Danach stehen in der Variable v_filter_items alle Felder, die ich nach einem Ausblenden auch wieder sichtbar machen will.

         IF INSTR(v_ausnahme_felder, v_currentitem ) = 0 THEN
           IF GET_ITEM_PROPERTY(v_currentitem,visible)= 'TRUE'  THEN
                 v_filter_items := v_filter_items || v_currentitem || ' ';
           END IF;         
         END IF;

Jetzt noch der Loop zum Sichtbar machen mit dem Zusatz auch die Felder wieder zu enablen:
     v_currentblockp := 'BLOCK.';
     LOOP
          v_currentitem2 := get_item_property(v_currentitem,nextitem);
         v_currentitem:= v_currentblockp || v_currentitem2;
         -- Ausstiegskriterium, wenn Current Item leer ist (also nur der Blockname)
         IF v_currentitem = v_currentblockp THEN
              EXIT;
         END IF;   
        
         -- Item muss aber in der Liste der sichtbaren Felder sein und nicht in der Ausnahmeliste
         IF  (INSTR(v_filter_items, v_currentitem ) != 0 AND INSTR(v_ausnahme_felder, v_currentitem ) = 0) THEN
           IF GET_ITEM_PROPERTY(v_currentitem,visible)= 'FALSE'  THEN
                  -- Felder wieder anzeigen und enablen
                  pkg_item.zeigen(v_currentitem);
                 
                  IF GET_ITEM_PROPERTY(v_currentitem,ITEM_TYPE) != 'DISPLAY ITEM' THEN
                       pkg_item.enable(v_currentitem);
                  END IF;  
           END IF;         
         END IF;
      END LOOP;

Ein Screenshot von der Maske mit den ausgeblendeten Feldern (diese ist nicht mehr schön, weil sie auch Frames enthält, die aber sichtbar bleiben sollen). Die Schaltflächen und die 4 Eingabefelder (weiß) sind in meinem Beispiel die Ausnahmefelder und von der Logik ausgenommen. Diese layouttechnisch unschöne Lösung war aber kostengünstiger als eine neue Version der Filtermaske.


Wie man erahnen kann, ist diese Lösung universell einsetzbar und auch noch weiter auszubauen. Ich denke daran, z.B. diese Felder konfigurierbar in einem DB-Schema zu speichern vielleicht. Damit wären dann user-spezifische Varianten zu erreichen.

Viele Grüße
Holger

Freitag, 20. Mai 2016

Forms Modernisierung - ein möglicher 3-Wege Plan

Gestern hat es wieder ein Webinar zum Thema Forms Modernisierung mit Mia Urman gegeben: "Looks do Count! Why does my EBS look so 90s?" Davon darf ich wieder Screenshots teilen und möchte ein paar Worte zu sagen. Der Hintergrund ist klar: mach das Aussehen deiner Forms Applikation schön, mit einer grauen Maus gewinnen wir keinen Schönheitspreis!

Eins ist aber klar: die getätigten Investitionen und Business Logik sollen erhalten bleiben. Vielleicht geben wir aber dem Anwender die Möglichkeit, eine Forms-Applikation für das Back Office zu benutzen und eine mobile Variante für unterwegs (hybride Ansätze).


alte und neue Oberflächen im Überblick ©Auraplayer

und kein neues Phänomen mehr heute Agilität ©Auraplayer

Meinen heutigen Beitrag habe ich "einen möglichen 3-Wege Plan" genannt. Was ich damit andeuten will, erkläre ich gleich. Es werden 3 Alternativen beschrieben, wie man vorhandene Forms Legacy Applikationen modernisieren kann, durchaus auch mischbar.

1. Nutzung des neuen Release Forms 12c
Forms 12c ist seit Oktober 2015 auf dem Markt und bietet mit dem neuen Feature Custome Color Schemes genug Möglichkeiten zur individuellen Gestaltung der Benutzeroberfläche.
Custome Color Schemes ©Auraplayer

2. Nutzung von Java Beans und PJC
Wem der vorhandene Funktionsumfang und UI Controls nicht ausreicht, kann sich durch die Schaffung von eigenen Java Bwans und Pluggable Java Components seine Oberfläche fast beliebig selbst erweitern und verschönern. Hier sei auf das LAF Projekt von Francois Dégrelle verwiesen und ebenso auf den Post vom DOAG Regionaltreffen. 
neue UI Controls bauen ©Auraplayer

viel Java Unterstützung in Forms ©Auraplayer

3. Exponieren und Nutzung von Webservices
Nächster Weg ist Forms Funktionalitäten als Webservices bereitzustellen, die dann beispielsweise aus mobilen Applikationen aufgerufen werden können. Der Vorteil: die Business Logik bleibt unverändert in Forms erhalten und keine Anpassung im Quellcode ist von Nöten. Denn das folgende Bild zeigt, die Veränderung geht weiter. Neue Paradigmen entstehen und alles vernetzt sich: Internet of Things, Bring your own device, Going Mobile, jede Information von überall verfügbar...
die schöne neue Welt ©Auraplayer

nochmal alte und neue Welt ©Auraplayer

Ergänzungen zu diesen Möglichkeiten gibt es sicher noch deutlich mehr. Andere Fahrpläne könnten sein: erstmal die Datenbank Version hochheben auf 12c und dann die Forms Version mitnehmen. Oder als Beispiel ein System aus der Firma: es gibt eine mächtige Forms Applikation klassisch im Back Office, gestartet mit Java Runtime. Parallel dazu läuft nun eine App für das Handy (ohne Java versteht sich), realisiert mit APEX. Beide nutzen aber nur 1 Schittstelle und weitere APEX-Module sollen entstehen, aber in friedlicher Koexistenz mit Forms. Denn auch hier gilt, sehr viel Geld und Know-How steckt darin und soll erhalten bleiben.

Dienstag, 19. April 2016

Forms 12c Standalone Client - frmsal.jar - ein paar Neuigkeiten

Hallo zusammen,

nach ein paar Tagen und Wochen mit Sammeln von Forms 12c Erfahrungen heute ein paar Neuigkeiten zu einer der neuen 12er Startoption mit dem frmsal.jar (Standalone Client ohne Browser und Applet).

Die Möglichkeiten Sinle-Sign-On und -Off zu nutzen gibt es nicht bei dieser Startoption, aber sie hat dennoch andere gravierende Vorteile.

  1. ohne Browser lauffähig
  2. eine Java Runtime Environment Umgebung wird auf dem Client gebraucht, oder kann auch auf einem Netzlaufwerk liegen
  3. die Startgeschwindigkeit ist sehr schnell im Vergleich eines Starts mit Browser
Eine Verbesserungspotential gibt es dennoch! Wenn man Jar-Files für die Forms-Applikation benötigt, werden bei dieser Startoption leider nicht gecached und jedesmal komplett beim Start der Anwendung geladen. Hier besteht auf jeden Fall Nachbesserungsbedarf.

Startaufruf von frmsal.jar mit JRE auf dem Netzlaufwerk
alle Jar-Files neu heruntergeladen beim Start in einen temporären Ordner
That's it for today. Kurz und knapp heute, vielleicht mit ein paar Argumenten für frmsal.jar.

Ciao
Holger

Donnerstag, 7. April 2016

Rückblick IT|espresso - Oracle Forms 12c in Hamburg

Heute fand in Hamburg im Gästehaus der dortigen Universität eine spannende Veranstaltung statt zum Thema Oracle Forms 12c, bei der ich als Vortragender mit dabei war.


IT|espresso was ist das denn? Ein Format ähnlich wie die DOAG Regionaltreffen Forms mit kurzen Vorträgen mit einem Unterschied: die IT|espresso ist morgens vor dem eigentlichen Job. Sie dient als Appetitanregung zu neuen Themen, bevor die eigentliche Arbeit beginnt. So ist kein ganzer Tag "futsch" wie bei einer ganztägigen Veranstaltung.

Agenda heute:
  • 08.30 Uhr Come Together
  • 09.00 Uhr Oracle Forms 12c – New Features + Roadmapmit Holger Lehmann
  • 09.30 Uhr Oracle Forms 12c - praktische Ansätze zur Modernisierung & Forms 12c Mobile mit Auraplayer mit Jan-Peter Timmermann
  • 10.00 Uhr Frühstück & Networking
Aufgeteilt hatten wir die Veranstaltung mit Beiträgen von Jan-Peter Timmermann und meinerseits. Ich habe begonnen mit den Neuerungen rund u das Thema Forms 12c und Jan Peter hat gezeigt, wie man Forms Applikationen in die mobile Welt bringen kann mit Hilfe von Webservices.

Nachfolgend ein Teil meiner Folien mit den Neuerungen von Forms 12c, welches nun knapp ein halbes Jahr erschienen ist.

langer Support bis ins Jahr 2023 ist gegeben

die verschiedenen Deployment Optionen zum Start der Anwendung

die neuen Colorschemes
Performancesteigerung bei Multi-Record Blöcken
neue System Events
BI Publisher Integration wie bei Reports

Vielen Dank an Gerd an dieser Stelle für die vielen Folien aus seinem Vortrag zum DOAG Dev Camp diesen Jahres, von denen ich viele übernommen habe. Zu den 2 wichtigsten Features der 12c Version zähle ich persönlich: die Unabhängigkeit der Applikation vom Browser durch geeignete Ersatzdeployment-Szenarien und den Geschwindigkeitsgewinn bei Multi-Record Blöcken.

Beim anschließenden Frühstück konnten wir noch mit den Teilnehmern weiter diskutieren. Der Hinweis auf die notwendige Repository-Datenbank zur Installation der Forms-Domäne wurde groß diskutiert, ebenso die Möglichkeit die Forms in die mobile Welt zu bringen. Hier besteht ein großes Potential für die Zukunft glaube ich.

Viele Grüße und hoffentlich bis zur nächsten Veranstaltung im Mai in Berlin
Holger

Samstag, 19. März 2016

Der Blick über den Tellerrand zur agilen Szene - 5. "Agile Cologne" und 50. Scrumtisch Köln

"Stillstand ist der Tod" - so möchte ich meinen heutigen nicht technischen Beitrag beginnen. Denn wer irgendwann stehen bleibt, kann sich meiner Meinung nicht weiter entwickeln.

Begonnen hat der ganze Transformationsprozess in unserem Team vor mehr als 1 Jahr. Der Hauptgrund dafür waren neue Strukturen nach Wechsel des Teamleiters, der sich neuen Aufgaben gewidmet hat. Sein Nachfolger war schon etwas infiziert mit dem Wind von neueren Methoden, wie sich das Team fortan organisieren könnte. Als Experiment wurde Kanban verprobt mit dem Ziel von weniger Bürokratie, mehr Transparenz, besserem Wissenstransfer und entsprechend höhere Selbstorganisation.


Wir haben viel experimentiert, über die Ergebnisse retrospektiviert und immer wieder neue Einflüsse auf uns wirken lassen. Auch haben wir über Software-Lösungen nachgedacht, sind uns aber einig, dass uns das physische Board am besten gefällt. Mit der Hilfe von Kollegen, die auf diesem Gebiet schon besonders firm sind, konnten wir auch eine kontinuierliche Verbesserung des Boards erreichen.

Nach diesen Erfahrungen kam bei mir und einem Kollegen der Wunsch auf, unsere Erfahrung in diesem Themengebiet zu vertiefen und wieder neue Luft zu schnuppern. Am Freitag 11.03.2016 findet in Köln im Mediapark die 5. "Agile Cologne" statt, eine ganztägige Veranstaltung mit ca. 150 Teilnehmern zum Thema "Agile". Die ganze Zeit wird in parallelen Streams im Open Space Format abgehalten, d.h. in Summe ca. 40 Session á eine Stunde Dauer.


Meine Sessionplanung:
  1. Lässt sich Selbstorganisation / agil verordnen?  11.30-12.30
  2. Die gelben Stämme - Yello Strom wird agil       12.30-13.30
  3. Einfach mehr schaffen                                        13.30-14.30
  4. You build it - You run it                                      14.30-15.30
  5. Warum scheitern immer mehr Scrum Projekte   15.30-16.30
  6. Agile Church                                                       16.30-17.30
Zu meinen Eindrücken schreibe ich später nochwas. Angeregt durch die neuen Themen, wollte ich auch den 50. Scrumtisch fast an gleicher Stelle besuchen, nur 5 Tage nach der Agile Cologne. Mehrere neue Gesichter waren mir bereits bekannt, so dass man sich fühlt, als wäre man schon ewig dabei. Der Scrumtisch ging von 19 - 22 Uhr am Mittwoch. Ebenso gab es wieder Sessions im Open Space. Dadurch ist der Austausch viel intensiver als bei reinen Vorträgen, gepaart mit direkten Diskussionen.



Nach einer kurzen Vorstellungsrunde zu den 2 Fragen: "Warum bin ich hier" und "Was für ein Jubiläum hatte ich kürzlich" wurden schon die Sessions geplant und dann ist der Scrumtisch gestartet.

Was bleibt?
Ich für mich fand es als Bereicherung in die neuen Welten der Agilität zu schnuppern. Auch wenn ich momentan keine Veränderung dahin in diese Richtung plane, ist der Austausch damit für mich aber besonders wertvoll. Einerseits um Wissen aufzusaugen und andererseits das Wissen mit zu nehmen und weiter zu verteilen oder auch vielleicht etwas davon ins Team zu transportieren. Agilität und alles was damit zusammen fällt, ist auch sicher kein Allheilmittel. Aber es bringt neue Ideen und Methoden in die sich verändernde Arbeitswelt, warum also nicht davon profitieren. Ich denke, ich werde auch weiter die Scrumtische besuchen, in diversen Büchern schnuppern und versuchen auch davon zu lernen. Aber auch bei uns in  der Firma gibt es schon den Open Space, die Retrospektiven, Lean Cafe und andere Aspekte der agilen Welt, die sicher immer weiter ein Teil unserer Methodik wird. Ich finde das Thema jedenfalls sehr spannend.

Viele agile Grüße
Holger