| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Die Ähnlichkeit zu Productstream Professional ist bemerkenswert. (GAIN Collaboration,PDM,PDM System,PLM,PLM System) |
Autor
|
Thema: Bei Statuswechsel Aktion ausführen (2220 mal gelesen)
|
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 14. Jul. 2011 09:42 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mir in meiner PSP 2010 PRO Umgebung eine neue Statusdefinition erstellt. Beim Wechsel auf diesen Status möchte ich jetzt, das eine bestimmte Aktion (angemeldeter Benutzername soll in das Feld CHECKED_2_BY geschrieben werden) geschieht. Nun gibt es ja in der PSP Konfiguration die Definition für den Statusübergang und dort habe ich beim Attribut Command als Wert
Code: ___CHANGEFIELD(CHECKED_2_BY=$USERID)
Leider funktioniert das nicht - jemand eine Idee oder zumindestens ein Anhaltspunkt?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jörg2 Mitglied
Beiträge: 509 Registriert: 20.02.2007
|
erstellt am: 15. Jul. 2011 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Das geht auch so nicht. Das Command verweist auf eine Prozedur, welche den Statuszustand an sich steuert. Schau die mal die Statusglobal.dbp an, dann wirst du sehen was ich meine. Zusätzliche Aktionen definierts du am Etype. Ich habe mal zwei Sceenshots angehängt. Beispiel: Neuer Status 00501 "Projekt angelegt" Bei der Anlage wird der JOBTYO-0003 ausgelöst
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 17. Jul. 2011 15:47 <-- editieren / zitieren --> Unities abgeben:
Ok, das ist doch schon mal ein Anhaltspunkt Also erweiter ich die Statusglobal.dbp nun mit meinen selbsterstellen Status 00025 :
Code:
procedure AIM_exec_cfg_OnStatus00025 /* arg1 ist der Ausgangsstatus oder leer bei Neueintrag */ exec_cfg_OnStatus("00025" $arg ); endproc
Code:
public Status_onEnter_00025, AIM_exec_cfg_OnStatus00025
Code:
public Status_onChange_00025, ___Return_0
Füge dann bei meinem Statusübergang bei onChange = Status_onChange_00025 und bei onEnter = Status_OnEnter_00025 hinzu. Abschließend noch den Verweiß beim EntityTyp AIM.DOC.ENG OnStatus00025 = ___JobCreate(JOBXY) Im JOBXY selbst, kann ich dann auf das jeweilige Element ___CHANGEFIELD(CHECKED_2_BY=$USERID) ausführen lassen? Korrekt? [Diese Nachricht wurde von BRein am 17. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
freak-tom Moderator PDM-/CAD-Admin
Beiträge: 347 Registriert: 07.03.2006 Productstream Professional Pro 2011 / Jobserver / Replikator Productstream Professional Office 2011 Productstream Professional Pro 2010 / Jobserver / Replikator Productstream Professional Office 2010 Inventor Suite 2011 Solid Works 2015 ECTR
|
erstellt am: 17. Jul. 2011 20:52 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
|
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 17. Jul. 2011 22:37 <-- editieren / zitieren --> Unities abgeben:
|
Jörg2 Mitglied
Beiträge: 509 Registriert: 20.02.2007
|
erstellt am: 18. Jul. 2011 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Ich würde auch keine vorhandene System-DBP ändern. Bei jedem Hotfix könnte diese Überschrieben werden. Wennn ich das richtig verstanden habe, ist für deinen Fall eine eigene DBP aber auch gar nicht notwendig. Suche dir eine Aktion, aus einem vorhandenem Statusübergang, welche (bis auf das Ändern des Feldes) dass macht, was du möchtest. Diese Aktion trägst du dann auch bei deinem neuen Status ein. Zusätzlich legst du den Job zum Ändern des Feldes an und ruft den Job wie angegeben auf. Der andere Weg wäre, eine eigene DPB, welche dann das Ändern des Feldes sofort enthalten kann. Ein zusätzlicher Job wäre dabei nicht notwendig. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 18. Jul. 2011 09:57 <-- editieren / zitieren --> Unities abgeben:
Hm... das habe ich jetzt aber nicht ganz verstanden. Angenommen ich nehme den Statusübergang von 00002 und kopiere diesen in meinen eigenserstellen Status und verweiße dann bei AIM.DOC.ENG auf OnStatus00002 (weil er ja kein OnStatus00025 kennt..) - macht ja aber keinen Sinn?! Oder wie meintest du das? Vielleicht ein paar Infos mehr: Mein selbsterstellter Status 00025(Geprüft) steht zwischen 00002(Zur Überprüfung) und 00003(Freigegeben). Beim Wechsel von 00025 -> 00003 soll in das Feld CHECKED_2_BY der jeweilige User eingetragen werden.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jörg2 Mitglied
Beiträge: 509 Registriert: 20.02.2007
|
erstellt am: 18. Jul. 2011 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Gut, dann würde ich so vorgehen, dass ich alle Atribute von 00002 zu 00025 kopiere und die Werte (wo nötig) ändere. Also z.B. OnChange = Status_onChange_00025 und OnEnter = Status_onEnter_00025 und Name= und Icon= Der Statuszustand muss natürlich an den richtigen Stellen, mit den erforderlichen Zielstatus (vermutlich 00003 und ?), so wie als Zielstatus von 00002 eingerichtet werden. Dann am AIM.DOC.ENG das Attribut OnStatus00025 = ___ChangeField(CHECKED_2_BY=$USERID) erstellen. Fertig! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 18. Jul. 2011 15:00 <-- editieren / zitieren --> Unities abgeben:
Das hatte ich ganz zu Anfang auch schon probiert. Status ändert sich allerdings nicht und ich bekomme im errlog.err die Meldung Code: Mon Jul 18 14:56:18 2011 :(03449)___ChangeStatus "00002"->"00025": OnEnter "Status_OnEnter_00025" unknown, errno=2
Liegt aber bestimmt daran das PSP ja gar nicht "Status_OnEnter_00025" kennt .. nicht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jörg2 Mitglied
Beiträge: 509 Registriert: 20.02.2007
|
erstellt am: 18. Jul. 2011 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Am Anfang hast du doch geschrieben, du hättest am Wert des Attributes Command am Status rumgespielt. Was hast du nun genau gemacht? Poste doch bitte ein paar Screenshots deiner Konfig. Die Fehlermeldung deutet darauf hin, das der Statuswechsel nicht funktioniert, da sind wir noch gar nicht beim Auslösen irgendwelcher Aktionen beim Erreichen eines Statuszustandes. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 18. Jul. 2011 15:31 <-- editieren / zitieren --> Unities abgeben:
Ich hatte am Wert des Attributs Command als auch am Wert des Attributs onChange und on Enter "rumgespielt". Anbei ein paar Screenshots (natürlich kein Life-System! ) [Diese Nachricht wurde von BRein am 18. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jörg2 Mitglied
Beiträge: 509 Registriert: 20.02.2007
|
erstellt am: 18. Jul. 2011 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Ganz ohne Command am Zielstatus geht es auch nicht. Trag da mal Command=Status_ToBeChecked ein. Das ist der Command, welcher auch beim Übergang 00001 zu 00002 ausgeführt wird. Dann solltest du die Namen noch abgleichen. Wenn die Statusfolge funktioniert, kannst du dich mit dem Ändern des Feldes beschäftigen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 18. Jul. 2011 16:28 <-- editieren / zitieren --> Unities abgeben:
Command und Namen habe ich angepasst. Ergebnis das selbe. Meine Theorie ist eher die, das PSP von einem Status_OnEnter_00025 gar nichts wissen kann und deswegen auch die Fehlermeldung im Log erscheint (=unknown). Wenn das so wäre, dann bleibt mir ja gar nichts anderes übrig als die Statusglobal.dbp anzupassen, nicht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
freak-tom Moderator PDM-/CAD-Admin
Beiträge: 347 Registriert: 07.03.2006 Productstream Professional Pro 2011 / Jobserver / Replikator Productstream Professional Office 2011 Productstream Professional Pro 2010 / Jobserver / Replikator Productstream Professional Office 2010 Inventor Suite 2011 Solid Works 2015 ECTR
|
erstellt am: 18. Jul. 2011 20:56 <-- editieren / zitieren --> Unities abgeben: Nur für BRein
Hallo BRein, die Fehlermeldung kommt, da er den Befehl Status_OnEnter_00025 nicht kennt. Damit er diesen kennt würde ich in die Statusglobal.dbp gehen, den Befehl Status_OnEnter_00005 in eine eigene DBP kopieren und entsprechend zu Status_onEnter_00025 ändern. Dann kompilieren und die DPQ Datei in die Konfig einhängen, an die gleiche Stelle wie die Statusglobal.dbq Dazu suche einfach in der Konfig nach der Datei kopiere den Eintrag und ändere in so um, das deine DBQ Datei auch geladen wird. Die Konfigänderungen würde ich in ein eigenes Profil machen, damit bei Updates die Änderungen nicht überschrieben werden. MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BRein Mitglied
Beiträge: 38 Registriert: 02.08.2010
|
erstellt am: 20. Jul. 2011 10:48 <-- editieren / zitieren --> Unities abgeben:
Dachte ich mir doch dass das so nicht funktionieren kann. Habe nun direkt die Statusglobal angepasst, da es für unsere PSP Umgebung keine weiteren Updates mehr geben wird. Mein selbsterstellter Status tut jetzt auch genau das was er soll - Vielen Dank an Jörg2 sowie freak-tom !!! [Diese Nachricht wurde von BRein am 21. Jul. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |