Hallo,
im ARIS Toolset haben ich einen ausführlichen Report, den ich jetzt schon fast komplett für den Business Architect umgesetzt habe.
Mir bleibt nur noch ein Problem. In dem Atttribute Verknüpfung1 sind Verweise auf "lokale" Dateien, wie "C:\Report\bild.jpg".
Wie bekomme ich diese Datei in meinen Report?
Gruß Carl
Die Frage ist nicht ganz eindeutig:
Soll der Wert des Attributs Verknüpfung1, also die URL oder Pfad zur Datei im Report erscheinen, damit der Leser des Reportdokuments den Verweis ebenso verfolgen kann wie der Aris-Anwender?
Dazu den Wert des Model-/Objektattributs Verknüpfung1 (Constants.AT_EXT_1 ) mit getValue() ermitteln und mit OutputLink() ausgeben (s. Aris Script Hilfe: Report class Output - Method OutputLink, mögliche Stolperfalle s. hier )
Das Ziel des Verweises sollte dann aber nicht lokal sein, sondern auf einem für alle Leser des Doks erreichbaren Server/Dokmgmtsystem.
Oder soll die referenzierte Datei bild.jpg bei der Reportausführung gelesen und im Reportdokument ausgegeben werden wie z.B. ein Logo?
Codebsp. s. Aris Script Hilfe: Report class Context - Method createPicture()
Dazu sollte die Datei aber als Ressource zu dem Reportscript auf dem Aris Business Server abgelegt werden: Architect > Modul Admin > Auswertungen > Gemeinsame Dateien - Hinzufügen (oder in der selben Kategorie wie das Script)
Hallo,
die referenzierte Datei soll in den Report aufgenommen werden. Also das Bild.
Da wir nur eine Business Architect Lizenz haben, aber einige Business Designer Lizenzen, suche ich einen Weg die Datei über ein "Unterprogramm" in den passenden Bereich zu bekommen.
Für den XML-Import gibt es eine Dialog-Funktion, die das liefert. Das muss doch auch ohne Dialog gehen.
Gruß Carl
Dann gilt der zweite Teil: Context.createPicture() verwenden
So ganz verstehe ich aber immer noch nicht, was das besondere an dem Bild ist:
- Hat jeder Anwender des Reports ein anderes in seinem lokalen Pfad? Soll er es interaktiv auswählen zum Zeitpunkt der Reportausführung?
- Oder ist es eine statische, für alle Anwender selbe Ressource?
Für 2. galt der Hinweis, die Grafik zusammen mit dem Reportscript auf dem Business Server zu speichern, wo der Report auch ausgeführt wird. Um im Kontext des Servers die Grafik ohne Dialog in das Reportdokument einzufügen, genügt createPicture("Bild.jpg"), wenn sie in der selben Kategorie wie das Script oder unter Gemeinsame Dateien zu finden ist.
Für 1. müßte
- der Anwender die Datei auswählen und öffnen mit var selFile = Dialogs.getFilePath(....),
- der Inhalt der Datei mit var imageData = selFile.getData(....) übernommen
- und damit createPicture ( byte[] imageData, String imageFormat ) gefüttert werden
Diese Bild enthält weitere graphische Erklärungen zum Prozess. Ich bin hier der einzige Administrator und wir haben 41 Aris-User in ungefähr 50 Projekten.
Die hinterlegten Bilder sollen narürlich auch nicht für alle User zur Verfügung stehen.
Mal abgesehen davon, das die User und ihre Chefs vom Toolset diesen Standard gewohnt sind.
Um genau zu seine liegen die Daten auf eine LAN-Server der mit entsprechedner Gruppensteuerung ist. Aber diese Details zu berücksichtigen scheint mir dann doch zu kompliziert.
Nun bitte ich doch, wenn es eine Lösung gibt, diese mir mitzuteilen.
Nichts für ungut,
Carl
Nach 15 Jahren Systemanalyse, Anforderungsmanagement und Testen kann ich nur sagen: 50% der Arbeit ist geschafft wenn die Aufgabe richtig beschrieben ist.
In dem (Modell- / Objekt- ?) Attribut Verknüpfung1 verweisen also Pfade auf verschiedene Bilddateien (oder auch andere Dateitypen?), die auf Fileserver liegen.
Dazu müssen die o.g. Script Methoden nur in eine neue Reihenfolge gebracht werden, den Rest macht das Klavier von allein. Die Aris Script Hilfe enthält unter den hervorgehobenen Stichworten ausformulierten Beispielcode.
- den Wert des Model-/Objektattributs Verknüpfung1 ( Constants.AT_EXT_1 ) mit AttrType.getValue() ermitteln
- den Pfad (als string) benutzen, um den Inhalt der Bilddatei einzulesen, z.B. als var imageData = strTargetpath.getData()
- damit createPicture ( byte[] imageData, String imageFormat ) füttern, um im Output-Objekt die Grafik einzufügen. Diese Methode ist nur für Bilddateien geeignet.
<quote>"...liegen die Daten auf eine LAN-Server der mit entsprechedner Gruppensteuerung ist. Aber diese Details zu berücksichtigen scheint mir dann doch zu kompliziert."</quote>
Für Anwender verschwimmen solche Details gerne in der Cloud, aber der Entwickler des Reports muß sich schon überlegen, ob nur die Modellierer (Ersteller der Verknüpfung) oder auch die Anwender, die den Report ausführen, mind. Leseberechtigung auf die referenzierte Datei haben, sonst gibt's kein Bild im Dokument.
Entschuldigt bitte, das meine Formulierungen so ungenau sind.
Das man die Adresse der Datei mit getValue bekommt, mit getData das Byte-Array für das Bild bekommt und es mit createPicture in das Dokument einbinden kann, das ist mir klar und ich dachte das wäre deutlich geworden.
Die Funktion getData gibt es nach Hilfe-System jedoch nur in zwei Klassen, der SelectedFile und der XLSDataObject. Das XLSDataObject bezieht sich meinen Verständnisses nach auf eine Excel-Datei. Das SelectedFile auf beliebige.
Jedoch kenne ich nur eine Funktion, nämlich die Context.getFile, die eine Klasse SelectedFile erzeugt. Diese kann nur auf interne Bereiche von ARIS zugreifen.
Da ich weis, das sich auch in diesem Forum viele schlaue Köpfe bewegen, dachte ich mir, hier kann mir jemand sagen, wie ich die Klasse SelectedFile erzeugen kann, ohne die Datei vorher in den ARIS-Arbeitsbereich, wie z.B. "Gemeinsame Dateien" laden zu müssen.
Eine alternative Lösung wäre eine Funktion, die die Datei in einen ARIS-Bereich lädt.
Habe ich noch eine Alternative vergessen ?