{"id":149,"date":"2016-01-06T12:25:20","date_gmt":"2016-01-06T11:25:20","guid":{"rendered":"http:\/\/all-in-for-erp.com\/de\/?p=149"},"modified":"2016-01-15T08:22:34","modified_gmt":"2016-01-15T07:22:34","slug":"entwickeln-mit-dem-infor-ln-studio","status":"publish","type":"post","link":"http:\/\/all-in-for-erp.com\/de\/2016\/01\/06\/entwickeln-mit-dem-infor-ln-studio\/","title":{"rendered":"Entwickeln mit dem Infor LN Studio"},"content":{"rendered":"<p>Es gibt ja nun schon seit mehreren Jahren das <strong>LN Studio<\/strong> als Entwicklungsumgebung f\u00fcr Infor LN. Das ist eine Eclipse-basierte Umgebung, die seitens Infor mit ein paar Plugins ausgestattet wurde. Diese Entwicklungsumgebung schaltet sich quasi vor die LN-Tools-Entwicklungsumgebung. Statt mit den Programmen <em>Sessions<\/em>, <em>Table Definitions<\/em> etc. arbeitet man dann komplett innerhalb von Eclipse. Es gibt dort dann eigene Masken zum Erstellen von Sessions, Domainen, Tabellen, Skripten, Messages. Alles was man so braucht. Nur f\u00fcr den Formeditor startet Eclipse dann wieder die klassische <em>DFE<\/em>-Windows-Anwendung.<\/p>\n<p>Ich habe das vor zwei drei Jahren mal ausprobiert und relativ schnell wieder aufgegeben, weil es einfach noch f\u00fcrchterlich instabil war. Nun bin ich aktuall mit der Projektleitung einer gro\u00dfen LN-Implementierung beauftragt, und es sieht so als, als ob wir da zumindest gro\u00dfe Teile der notwendigen Softwareentwicklungen \u00fcber das Studio abwickeln werden. Insofern war&#8217;s Zeit, sich das mal wieder zu installieren und auf die Anwendbarkeit zu beurteilen.<\/p>\n<p><strong>Und ich muss sagen, ich find&#8217;s ziemlich gut.<\/strong> (Hat jemand behauptet, ich w\u00fcrde auf Infor immer nur schimpfen?) Es gibt noch so ein paar Features, die ich mir dringend w\u00fcnschen w\u00fcrde, aber so f\u00fcr die normale Entwicklung sieht&#8217;s erstmal gut aus.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-171\" src=\"http:\/\/all-in-for-erp.com\/de\/wp-content\/uploads\/sites\/2\/2016\/01\/ApplicationStudio.png\" alt=\"ApplicationStudio\" width=\"1236\" height=\"989\" srcset=\"http:\/\/all-in-for-erp.com\/de\/wp-content\/uploads\/sites\/2\/2016\/01\/ApplicationStudio.png 1236w, http:\/\/all-in-for-erp.com\/de\/wp-content\/uploads\/sites\/2\/2016\/01\/ApplicationStudio-300x240.png 300w, http:\/\/all-in-for-erp.com\/de\/wp-content\/uploads\/sites\/2\/2016\/01\/ApplicationStudio-768x615.png 768w, http:\/\/all-in-for-erp.com\/de\/wp-content\/uploads\/sites\/2\/2016\/01\/ApplicationStudio-1024x819.png 1024w\" sizes=\"(max-width: 1236px) 100vw, 1236px\" \/><\/p>\n<p><strong>Fangen wir mal mit den positiven Features an:<\/strong><\/p>\n<ul>\n<li>Es gibt ein <strong>Syntax-Highlighting<\/strong>. Und zwar eines, das ziemlich gut funktioniert.<\/li>\n<li>Es gibt <strong>Code-Completion<\/strong>. Man tippt &#8220;tcibd001.&#8221;, STRG+Leertaste, und kriegt eine Dropdown-Liste aller Felder der Artikeltabelle samt Bezeichnung. Sehr sch\u00f6n.<\/li>\n<li>Das Studio <strong>kompiliert eine ge\u00e4nderte Source nach dem Abspeichern automatisch<\/strong> und markiert die Fehler im Quelltext. Man muss den Editor zum kompilieren nicht verlassen, nicht auf &#8220;Compile&#8221; klicken, nicht den Editor neu aufrufen und zur Fehlerhaft gemeldeten Zeile springen. Das spart enorm Zeit.<\/li>\n<li>Aus einer genutzten Funktion in einem Quelltext gelingt der <strong>Sprung in den Quelltext<\/strong>, in dem diese Funktion definiert ist. Das EDV-zu-Fu\u00df-Gefummle, das man klassischerweise macht (Funktion merken, neues <em>Maintain Program Scripts<\/em> starten, DLL suchen, Editor starten, Suchfunktion starten, Funktionsname eingeben), entf\u00e4llt.<\/li>\n<li>Das Studio integriert sich sauber ins Configuration Management (also die ebenfalls leider selten genutzte Option, alte Versionen ge\u00e4nderter Programmobjekte weiterhin vorhanden zu haben)<\/li>\n<li>und noch sauberer ins PMC.<\/li>\n<li>Das hei\u00dft, ich in kann im Studio auf dem Entwicklungssystem eine Entwicklungsaufgabe (&#8220;Aktivit\u00e4t&#8221;) definieren, die dazu ben\u00f6tigten Softwareobjekte, Sourcen, Tabellen, Sessions, Domainen etc. anlegen bzw. \u00e4ndern, testen, debuggen, und wenn dann alles funktioniert, checke ich alle Objekte in der Aktivit\u00e4t mit einer einzigen Aktion wieder ein und erstelle f\u00fcr genau diese Aktivit\u00e4t eine Solution, die dann auf&#8217;s Echtsystem \u00fcbertragen wird. Ich gebe nur einmal meinen Commit-Text ein und nicht bei jedem Objekt. Funktionierte bei meinen Tests stabil und zuverl\u00e4ssig. Das erspart einem die beim &#8220;klassischen&#8221; Entwickeln auftretende Notwendigkeit, sich die angepackten Programmobjekte entweder aufzuschreiben, oder immer direkt in eine Solution zu h\u00e4ngen, oder irgendwie mit den Development Projects und Project Parts rumzufummeln. Das ist eigentlich genau das, was man braucht.<\/li>\n<li>Der <strong>Debugger<\/strong> funktioniert deutlich eleganter als der &#8220;klassische&#8221;. Man sieht den Stack, Variableninhalte werden schon beim Maus-Rollover angezeigt, lokale Variablen ausserdem in einer Liste.<\/li>\n<li>Richtig schnuckelig: Das Studio kompiliert zur Laufzeit ben\u00f6tigte Sourcen <strong>automatisch in den Debugmodus<\/strong>, wenn man am Debuggen ist (Vorhandensein von Sourcecode nat\u00fcrlich vorausgesetzt). Man muss nicht mehr jede DLL, die man analysieren muss, manuell in die Entwicklungs-VRC ziehen und manuell mit Debugger kompilieren.<\/li>\n<\/ul>\n<p><strong>Negativ aufgefallen sind mir:<\/strong><\/p>\n<ul>\n<li><strong>Der Debugger ist zu langsam<\/strong>. Kann sein, dass das bei mir noch eine Einstellungssache ist, muss ich noch pr\u00fcfen. Aber so ist&#8217;s echt schwierig. Vom &#8220;Step&#8221; dr\u00fccken bis zu dem Zeitpunkt, an dem der Instruction-Zeiger eine Zeile tiefer wandert, vergehen mitunter 15 Sekunden. Irgendwas ist da noch nicht rund. So ist damit jedenfalls nicht wirklich produktiv zu arbeiten.<\/li>\n<li><strong>Extrem unsch\u00f6n<\/strong> finde ich die Idee, die Session-Skripte und DALs im Studio hinter der Session bzw. hinter der Tabelle zu verstecken. Es gibt (in der hierarchischen Struktur der vorhandenen Programmobjekte) keinen Zugriff auf &#8220;Skripte&#8221;, sondern nur auf &#8220;Sessions&#8221;, &#8220;Tabellen&#8221; und &#8220;Libraries&#8221;. Das Session-Skript findet sich dann als ein Reiter unter diversen anderen, die die Session definieren. Das DAL findet sich entsprechend als ein Reiter im Tabelleneditor. Das entspricht nicht der Art, wie LN stellenweise programmiert ist, Skripte k\u00f6nnen eben durchaus mal ein Eigenleben entwickeln.<\/li>\n<li>Was beim Neuentwickeln von Software nicht st\u00f6rt, aber den Einsatz des Studios beim \u00c4ndern von Standardobjekten fast verunm\u00f6glicht, ist, dass man <strong>nur auf jeweils eine Version eines Objektes Zugriff<\/strong> hat. Das hei\u00dft, ich sehe bei einem ver\u00e4nderten Standard nur meine \u00c4nderungen, nicht aber den aktuellen (bspw. durch Standard-Solutions ver\u00e4nderten) Standard. Das macht das Konsolidieren von Anpassungen mit Standard-\u00c4nderungen fast unm\u00f6glich. Da tut es meine klassische, auf JEdit aufsetzende Entwicklungsumgebung einfach sehr viel besser.<\/li>\n<\/ul>\n<p>Die beiden letzten Punkte sind wirklich kritisch, wenn man das Studio nicht nur f\u00fcr Neuentwicklungen einsetzen will, sondern auch im Wartungsbetrieb nutzen m\u00f6chte. Es fehlt einfach die \u00dcbersichtlichkeit, man sieht nicht so richtig, welche Skripte denn in den Umgebungen rumschwirren, welche angepasst sind etc. Das ist in der althergebrachten Toolsumgebung wesentlich leichter zu sehen. Hier w\u00fcrde ich mir dringend w\u00fcnschen, dass sich Infor nochmal dranbegibt &#8211; <strong>denn dann ist das Studio eine wirklich runde Sache<\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Was denken Sie?<\/strong> Haben Sie schonmal mit dem Infor LN Studio gearbeitet? W\u00fcrden Sie&#8217;s nutzen wollen? Oder ist&#8217;s \u00fcberfl\u00fcssiger Kram (&#8220;der <em>vi<\/em> tut&#8217;s doch auch&#8230;&#8221;) Ich w\u00fcrde mich sehr \u00fcber Ihre Gedanken und Kommentare freuen, gleich hier unten gibt&#8217;s genug Platz!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt ja nun schon seit mehreren Jahren das LN Studio als Entwicklungsumgebung f\u00fcr Infor LN. Das ist eine Eclipse-basierte Umgebung, die seitens Infor mit ein paar Plugins ausgestattet wurde. Diese Entwicklungsumgebung schaltet sich&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":172,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/posts\/149"}],"collection":[{"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":12,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"predecessor-version":[{"id":190,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/posts\/149\/revisions\/190"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/media\/172"}],"wp:attachment":[{"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/all-in-for-erp.com\/de\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}