| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: JobServer (986 mal gelesen)
|
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 02. Aug. 2005 10:13 <-- editieren / zitieren --> Unities abgeben:         
Ich habe folgendes Problem: Ich möchte ein Feld eines Datensatzes (Fremdnummer) im Jobserver verwenden, um den neuen Dateinamen beim Konvertieren in Version 2000 zu erzeugen. Dazu lege ich eine Umgebungsvariable bei "Befehl bei Anlage" (CMD_CREATE_JOB) an. Für den AutoCAD-Aufruf in "Befehle für Ausführung" (CMD_DO_JOB) würde ich diese Variable verwenden, sie ist aber dort nicht mehr vorhanden. Wie muß ich dazu richtig vorgehen? ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 02. Aug. 2005 19:48 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Hallo Axel, CMD_CREATE_JOB ist glaub ich "Befehle bei Anlage"? (hab kein Compass mehr zum nachschauen) Wenn du die Variable hier belegst, ist sie auf jenem Client gültig, der den Job auslöst. Abgearbeitet wird der Job ja aber auf einem anderen Client, kann so also nicht funktionieren. Hier gibt's 2 Möglichkeiten: 1) du verwendest in CMD_CREATE_JOB folgenden Befehl: JBSSubstJobField(CMD_DO_JOB) Damit wird der Eintrag im Feld CMD_DO_JOB zum Zeitpunkt der Job-Anlage substituiert. Dann müsste es funktionieren. 2) Im aktuellen Datensatz des Jobs findest du das Feld ELEMENT_AIMKEY. Dort steht der AIMKEY jenes Elements drin, für das der Job ausgeführt wird. Über Funktionen wie @where(), ___ForRela() etc. kannst du damit alle Daten des betreffenden Elements zur Laufzeit des Jobs auslesen. Ciao, WolfgangE P.S.: Hab hier nur einen kleinen "Gastbesuch", hab nach wie vor selbst keinen Internetanschluss, evtl. Antworten sehe ich vielleicht erst in ein paar Wochen wieder. ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 06. Aug. 2005 14:14 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Hallo Axel, noch einen Nachtrag, mit dem's vermutlich noch einfacher geht: beim Jobserver ist immer zu beachten, auf welches Element sich die Eingaben im Jobserver beziehen. Die Befehle für die Ausführungen (vor, für und nach Ausführung) beziehen sich immer auf das Element, für das der Job ausgelöst wurde. Das heißt du kannst bei CMD_DO_JOB so arbeiten, als wäre gerade das Dokument selbst markiert. Steht also deine Fremdnummer z.B. im Feld CUSTOM_1_NUM, so kannst du einfach #CUSTOM_1_NUM zum Auslesen verwenden. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 10. Aug. 2005 09:59 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang, es ist schön, daß du dich immer noch im Forum beteiligst! Ohne deine Beteiligung ist es so ruhig geworden. Mein Problem mit den Umgebungsvariablen im JobServer habe ich noch nicht verstanden, es klappt einfach nicht.
------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WPiatkowski Mitglied ApplikationEngineer
 
 Beiträge: 192 Registriert: 18.10.2002 AT 286, EGA-Karte, 640KB RAM, 51/4" Floppy, 10MB Festplatte
|
erstellt am: 10. Aug. 2005 22:30 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
|
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002
|
erstellt am: 11. Aug. 2005 09:13 <-- editieren / zitieren --> Unities abgeben:         
Ich habe jetzt mal 2 Screenshots meines Jobs angehängt. In der Funktion SVDI_Name_Expl definiere ich die Umgebungsvariablen, da steht unter anderem: ___Environment(User_Name=@(where db=VIEW_CONTACT_PERSON (IDENT='$(USERID)') #SHORT_DESC)); ___Environment(Exp_Pfad=G:\\$(User_Name)\\); ___Environment(Exp_Znr=@(DOCNAME0:F)); Das Lispprogramm COMPASSDWG1 erzeugt ein Script mit den Angaben, die als Parameter übergeben werden. Vielleicht kann mir dann jemand helfen.
------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WPiatkowski Mitglied ApplikationEngineer
 
 Beiträge: 192 Registriert: 18.10.2002 AT 286, EGA-Karte, 640KB RAM, 51/4" Floppy, 10MB Festplatte
|
erstellt am: 11. Aug. 2005 10:30 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Hallo Axel, vielleicht hilft Dir mein Beispiel. Ich möchte an ein Programm tifgen.exe AIMKEY des Jobs und des Dokumentes übergeben. AIMKEY des Dokumentes wird direkt bei der Ausführung angesprochen mit #AIMKEY. AIMKEY des Jobs definiere ich bereits bei der Anlage ___Environment( TLS_PAR= #AIMKEY); und übergebe an die Befehlszeile mit JBSSubstJobField(CMD_DO_JOB); Somit nach der Anlage des Jobs steht im JobServer tiffgen.exe #AIMKEY | 236788.23684 Die Variablen werden also auf der ersten Registerkarte "Jobdaten" definiert und auf der zweiten "Befehle" als $-Variablen benutzt. Sie werden zum Zeitpunkt der Anlage evaluiert und zum Zeitpunkt der Ausführung stehen sie im Klartext zur Verfügung Gruß Waldemar Piatkowski Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002
|
erstellt am: 11. Aug. 2005 11:23 <-- editieren / zitieren --> Unities abgeben:         
Hallo Waldemar, dein Beispiel ist ja so ähnlich wie meines, nur werden meine Variablen in einer DBQ-Funktion erzeugt. Da hängt bei mir das Problem. Wenn ich die Variablen "bei der Anlage" direkt schreibe, klappt es. Kann es sein, daß die Übergabe aus einer DBQ-Funktion so nicht funktioniert? Wenn ich die Funktion über die Shell aufrufe, werden die Variablen erzeugt. ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WPiatkowski Mitglied ApplikationEngineer
 
 Beiträge: 192 Registriert: 18.10.2002 AT 286, EGA-Karte, 640KB RAM, 51/4" Floppy, 10MB Festplatte
|
erstellt am: 11. Aug. 2005 12:13 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Hallo Axel, es kann sein, dass die JobServer.DBQ wo sich dies Ganze abspielt deine DBQ nicht sieht, somit die Variablen nicht definiert sind. Du müsstest ev. in der Konfiguration nachschauen wo Deine Module sichtbar sind. Gruß Waldemar Piatkowski Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002
|
erstellt am: 11. Aug. 2005 12:31 <-- editieren / zitieren --> Unities abgeben:         
Das Modul wird gefunden, der Rest der Funktion wird ja ausgeführt. Kann es sein, daß im Jobservermodul "bei der Anlage" @(DOCNAME0:F) nicht funktioniert? Der Pfad ist erzeugt worden. ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WPiatkowski Mitglied ApplikationEngineer
 
 Beiträge: 192 Registriert: 18.10.2002 AT 286, EGA-Karte, 640KB RAM, 51/4" Floppy, 10MB Festplatte
|
erstellt am: 11. Aug. 2005 14:15 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Axel, DOCNAME0 wird mit sicherheit bei der Anlage NICHT gefunden, da Du auf dem JOB-Datensatz stehst und nicht auf dem Dokument. Du kannst es aber lösen durch Variable. z.B. "Befehle bei der Anlage" ___Environment( TLS_PAR= @(where db=#ELEMENT_FOLDER "AIMKEY=#ELEMENT_AIMKEY" #FILE_NAME); Damit kanst Du den Dateinamen bei der Anlage ermitteln. Mein vorher vorgestellter Job würde beim Ausführen folgendes in der Zeile "Befehle für Ausführung" liefern. tiffgen.exe #AIMKEY | ENG-00016A Gruß Waldemar Piatkowski Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002
|
erstellt am: 12. Aug. 2005 13:06 <-- editieren / zitieren --> Unities abgeben:         
Waldemar, da hast du Recht, das habe ich nicht bedacht. Beim Testen hat es jetzt mit dem normalen Dateiname so funktioniert wie du geschrieben hast. Nochmals vielen Dank. ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 17. Aug. 2005 18:33 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Hallo Axel, dein Beispiel wie du es in den Screenshots festgehalten hast müsste grundsätzlich funktionieren, nur hast einen kleinen Fehler in der Logik. Was macht die Funktion JBSSubstJobFiel(CMD_DO_JOB)? Sie substituiert die Ausdrücke im Feld CMD_DO_JOB im Rahmen der Jobanlage. Da du im Feld CMD_DO_JOB die Varialben entsprechend rein geschrieben hast, werden diese auch substitiuert. Nur, haben sie zu diesem Zeitpunkt schon irgend einen Wert? Nein. Wann belegst du nämlich die Variablen (Funktionsaufruf SVDI_Name_Expl)? NACH dem Aufruf von JSBSubstJobField(...). Du musst die Varialben aber natürlich belegen, BEVOR du die Funktion zum Substitieren aufrufst. Konkret also: setze einfach das SVDI_Name_Expl an erste Stelle im Feld "Befehle bei der Anlage". Mögliche Alternative bzw für's weitere Verständnis: Alle drei Belegungen der Funktion SVDI_Name_Expl könntest du grundsätzlich auch direkt ins Feld CMD_DO_JOB schreiben, müsste auch funktionieren. Allerdings musst hier auf ein paar Sachen Acht geben: - Das Feld CMD_DO_JOB wird erst dann abgearbeitet, wenn der Job selbst vom Jobserver gestartet wurde. Du musst also überlegen, ob du zu diesem Zeitpunkt (der ja wesentlich später sein kann als jener Zeitpunkt, zu dem der Job angelegt wurde) die Funktionen wirklich noch so aufrufen kannst oder ob sich schon was in der Umgebung geändert haben kann. - Der Inhalt vom Feld CMD_DO_JOB wird immer im Kontext jenes Elements ausgeführt, für welches der Job ausgelöst wurde. Wenn du also #DOCNAME0 verwendest, erhälst du den Ablagepfad des Dokuments, für welches der Job gerade ausgeführt wird. Ist es kein Dokument, bekommst du natürlich keinen Wert mehr zurück. Willst du einen Wert oder eine Funktion von einem anderen Folder aufrufen, musst immer mit einem ___ForRela() oder @where() dran. - Achtung mit JBSSubstJobField-Funktionen: Du hast bei der Anlage bereits ein JBSSubstJobField(CMD_DO_JOB) verwendet. Würdes du also in CMD_DO_JOB ein #DOCNAME0 verwenden, würde dieses jetzt sofort substituiert, evtl. erfolglos wenn der Kontext nicht stimmt. In weiterer Folge: wenn der Job dann tatsächlich ausgeführt wird, bekommt der Job nicht mehr #DOCNAME0 übergeben, sondern den zuvor mit JBSSubstJobField() erhaltenen Wert. In diesem Fall müsstest also entweder das JBSSubstJobField(CMD_DO_JOB) entfernen (davor prüfen ob du's nicht noch für andere Werte in dem Feld brauchst) oder statt #DOCNAME0 einfach ##DOCNAME0 schreiben. ##DOCNAME0 ergibt substituiert #DOCNAME0, dies würde dann in CMD_DO_JOB so stehenbleiben und bem Ausführen des Jobs auch als #DOCNAME0 übergeben. So, da bin ich ja ganz schön viel los geworden, hat mir doch etwas gefehlt die Schreiberei hier.  Ich hoffe es hilft dir axel (und natürlich auch den anderen), weiters kann ich dir empfehlen die bei Compass mitgelieferte Jobserver-Doku durch zu arbeiten, die ist inzwischen recht gut geworden.
Ciao, WolfgangE P.S.: bin jetzt wieder öfter online
------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
 
 Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 18. Aug. 2005 12:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang, vielen Dank für die ausführliche Erklärung. Ist die mitgelieferte Jobserver-Doku jetzt erst bei der neuesten Version so richtig gut? Ich habe leider hier noch nicht die neueste Software! Da ich die Funktion SVDI_Name_Expl im Jobserver und auch beim Exportieren von Dokumenten verwende (also ohne Jobserver), habe ich mein Problem mittlerweile so gelöst:
if( wcomp("JOBSERVER","#DBNAME") ) ___Environment(Exp_Znr=@(where db=#ELEMENT_FOLDER "AIMKEY=#ELEMENT_AIMKEY" #FILE_NAME)); else ___Environment(Exp_Znr=@(DOCNAME0:F)); Wenn die Funktion mit dem Jobserver aufgerufen wird, wird die Variable mit #FILE_NAME belegt, sonst mit @DOCNAME0:F). Der Rest mit der Substitution mit JBSSubstJobField(CMD_DO_JOB) habe ich richtiggestellt. Jetzt funktioniert es wie gewünscht. Danke an alle!
------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
   
 Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 18. Aug. 2005 13:33 <-- editieren / zitieren --> Unities abgeben:          Nur für axeld
Zitat: Original erstellt von axeld: Hallo Wolfgang, ... ... Ist die mitgelieferte Jobserver-Doku jetzt erst bei der neuesten Version so richtig gut? ... ...
Die letzt Doku die ich in der Hand hatte war die der 5.5.1, zur 5.4.2 ist aber nicht soooo viel hinzu gekommen, die passt also auch ziemlich gut. Sei aber gesagt dass dich mit dieser Doku bzw. überhaupt mit dem Jobserver schon richtig auseinander setzen musst, sprich das ganze braucht Zeit. Der Jobserver ist leider nichts was man mal so schnell über die Mittagspause machen kann, weil's einfach schon relativ viel Wissen über die Programm- bzw. Datenbankstruktur und eigentlich auch Programmierung braucht. Wenn mit der Materie aber schon ein wenig zu tun hast, ist die Jobserver-Doku durchaus recht gut.
------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |