Autor
|
Thema: Dienste des Werkers setzen (1078 mal gelesen)
|
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 10:52 <-- editieren / zitieren --> Unities abgeben:
Hallo, also folgende Situation: Ich habe drei Werkerklassen. Daraus werden durch den Werkerpool mehrere "Instanzen" der drei Werkerklassen erzeugt. Bsp.: Klassen: Heinz, Dieter und Peter erzeugte Werker: Heinz_1, Heinz_2, Dieter_1, Peter_1 und Peter_2 Jetzt will ich den erzeugten Werkern MIT EINER EIGENEN METHODE verschiedene Dienste geben. Dafür müsste ich die Tabelle "Angebotene Dienste" eines Werkers neu setzen bzw. beschreiben. Bei den Importern wie beispielsweise Einzelstation ist das kein Problem (Einzelstation.Imp.SetzeDienste(Tabelle))... Bei einem Werker klappt es nicht!!! Laut Hilfe soll es genauso wie bei den Importern funktionieren (Werker.Exp.SetzeDienste(Tabelle)). ABER: Es tut's nicht!!! Bitte um Hilfe! Vielen Dank im Voraus. MfG kannix777 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 28. Jan. 2008 12:11 <-- editieren / zitieren -->
wo steht denn Dein Werker ? versuchs mal so : werkerpool.be.Exp.setzeDienste(Tab); ------------------ Der Simulator WSL, Bruxelles |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 12:17 <-- editieren / zitieren --> Unities abgeben:
Die Werkerklasse besitzt keine Dienste. Erst durch eine Konstruktor-Methode, d.h. erst wenn das Werkerpool einen Werker aus der jeweiligen Klasse erzeugt, soll ein bestimmter Dienst in die werkereigene Tabelle "Dienste" geschrieben werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 12:28 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Simulator: wo steht denn Dein Werker ?versuchs mal so : werkerpool.be.Exp.setzeDienste(Tab);
Was meinst Du mit: "Wo steht Dein Werker?" Wenn ich Deinen Vorschlag in meiner Konstruktor-Methode verwende, kommt die übliche Fehlermeldung: Unbekannter Name: Exp.SetzeDienste
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 28. Jan. 2008 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
|
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 28. Jan. 2008 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
|
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 14:56 <-- editieren / zitieren --> Unities abgeben:
|
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 28. Jan. 2008 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
|
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 15:11 <-- editieren / zitieren --> Unities abgeben:
Hey, dies ging ja schnell; danke. Leider funktionierts nicht. Erstens: In dem Bsp. sind die Werker (Peter...) als Klassen deklariert. Dies will ich ja eben nicht, da ich ja sonst direkt in diese Klassen die entsprechenden Dienste schreiben könnte. Aber auch sonst funktionierts nicht, da Fehlermeldung: Unbekannter Name: exp.setzeDienste Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 28. Jan. 2008 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
Nach welchem Kriterium sollen dann die Dienste den Mitarbeitern zugewiesen werden? Bei mir funktioniert die Methode bzw. das Modell. Wichtig ist das die Methode in der Konstruktorsteuerung des Werkers eingetragen ist, da sonst der Bezeichner ? nicht funktioniert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 15:34 <-- editieren / zitieren --> Unities abgeben:
Schon klar... Ich habe beispielsweise eine Klasse "Werker" - ohne Dienste. Ich habe eine Konstruktorsteuerung, die beim Erzeugen eines Werkers durch den Werkerpool z.B. seinen Namen auf "Werker_1" setzt. ( @.Name := "Werker_" + to_str(@.ID) ) Jetzt soll zusätzlich dem erzeugten Werker "Werker_1" ein Dienst - z.B "ServiceWerker_1" zugewiesen werden. Erzeugt das Werkerpool 2 Werker, so soll der zweite Werker den Dienst "ServiceWerker_2" bekommen, usw. Es bleibt nur die Frage zu klären, wie ich die werkereigene Tabelle - sprich: Die Tabelle, die beim drücken des buttons Dienste - mit einer Methode beschreiben kann. Laut Hilfe muss es mit "Pfad.exp.setzeDienste(Tab)" gehen. ABER es tuts nicht!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 15:41 <-- editieren / zitieren --> Unities abgeben:
Ich habe es mit einem anderen Attribut versucht... nämlich mit der Priorität, und mit der gehts. @.exp.prioritaet := @.ID; Dann setzt die Konstruktorsteuerung bei den erzeugten Werkern mit steigender Werkeranzahl jeweils die Priorität um 1 hoch. Also warum funktioniert das nicht mit den Diensten, die der Werker anbietet. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 28. Jan. 2008 18:24 <-- editieren / zitieren -->
|
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 28. Jan. 2008 20:33 <-- editieren / zitieren --> Unities abgeben:
Danke für Deinen Hinweis mit der Liste. Ist prinzipiell die richtige Vorgehensweise. Ich habe jedoch keinerlei Probleme mit dem Zugriff auf die jeweiligen erzeugten Werker... Das Modell kann ich leider nicht online stellen, da es nicht veröffentlicht werden darf. (Rechte & so) Aber darum geht es gar nicht. Man kann sich ein sehr einfaches Modell überlegen. Ich werde sehr wahrscheinlich erst übermorgen wieder mit plant simulation arbeiten, sonst würde ich auf die Schnelle dieses einfache Modell erstellen und es online stellen. Trotzdem ein Versuch. Folgendes Szenario: Im Netzwerk befinden sich: Quelle, Senke, 2 x Station, 2 x Arbeitsplatz, Werkerpool, Broker Station1 importiert immer den Dienst "ServiceStation1", Station2 entsprechend "ServiceStation2". Es gibt die Klasse Werker (ohne Dienste). Werkerpool soll 2 Werker erzeugen. Die Konstruktormethode der Klasse Werker ändert den Namen des erzeugten Werkers (@.Name := "Werker_" + to_str(@.ID); Damit gibt es im Werkerpool die Werker: Werker_1 und Werker_2 !! Jetzt soll diese Konstruktormethode zusätzlich die Dienste der erzeugten Werker setzen. Werker_1 erhält den Dienst "ServiceStation1" und Werker_2 entsprechend "ServiceStation2" Normalerweise ist dies mit "@.exp.setzeDienste(Tab)" getan, ABER nicht bei mir! Man könnte jetzt meinen, warum eigentlich der ganze Unfug. Warum macht er nicht einfach zwei unterschiedliche Werkerklassen und schreibt die Dienste von Hand rein. Bei dem oben genannten Modell ist dies kein Problem. Was wäre, wenn ich viel viel viel mehr unterschiedliche Werker bräuchte.. Sorry, etwas viel Text. Eigentlich ein einfaches Problem (Herausforderung). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 28. Jan. 2008 21:51 <-- editieren / zitieren -->
Zitat: Ist prinzipiell die richtige Vorgehensweise. Ich habe jedoch keinerlei Probleme mit dem Zugriff auf die jeweiligen erzeugten Werker...
Nein, Du hast keine Probleme mit dem Werkerzugriff ? Warum schreibst Du denn permanent: Zitat: Laut Hilfe muss es mit "Pfad.exp.setzeDienste(Tab)" gehen. ABER es tuts nicht!!!
Zitat: Das Modell kann ich leider nicht online stellen, da es nicht veröffentlicht werden darf. (Rechte & so) Aber darum geht es gar nicht. Man kann sich ein sehr einfaches Modell überlegen
. Sorry, aber der Sinn dieses Forums ist nicht, dass wir uns alle ein Modell für Dich ueberlegen! POM hat es bereits fuer Dich getan und ich habe es auch nochmal ueberprüft und es funktioniert ! Zitat:
Die Konstruktormethode der Klasse Werker ändert den Namen des erzeugten Werkers (@.Name := "Werker_" + to_str(@.ID); Damit gibt es im Werkerpool die Werker: Werker_1 und Werker_2
nun, das stimmt nur bedingt ! Zitat: Was wäre, wenn ich viel viel viel mehr unterschiedliche Werker bräuchte..
Die Lösung ist Dir bereits präsentiert worden! (s.o.) ------------------ Der Simulator WSL, Bruxelles |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 29. Jan. 2008 10:10 <-- editieren / zitieren --> Unities abgeben:
Hey, nicht aufregen... Wie Du richtig festgehalten hast, ich habe kein Problem mit dem Werkerzugriff... Ihr sollt auch nicht sich ein Modell für mich überlegen... Ich bitte lediglich um eine Antwort auf die Frage, warum ich "Werker.exp.setzeDienste(Tab)" nicht verwenden kann, um die Dienste eines Werkers mit einer Methode zu bestimmen. Das ist alles. @Simulator: Wenn Du das Modell von pom ja gesehen hast, weißt Du auch, warum es mein Problem nicht löst. Ich habe es aber auch oben schon geschrieben. Anscheinend ist meine kleine Herausforderung nicht so trivial wie ich dachte... So 'ne Idee: Vielleicht liegt es an der Version 7.0 research, wobei ich es nicht glaube. Vielen Dank nochmal für Euer Bemühen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 29. Jan. 2008 10:19 <-- editieren / zitieren -->
das Thema wäre schon längst erledigt, wenn Du denn den kleinen Modellausschnitt, der die Werker generiert und die Dienste zuordnet, geschickt hättest. Wie gesagt, bei POM & mir funktioniert es ! ------------------ Der Simulator WSL, Bruxelles [Diese Nachricht wurde von Simulator am 18. Feb. 2008 editiert.] |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 29. Jan. 2008 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
Wie vom Simulator schon angemerkt war bereits deine Frage im ersten Modell gelöst, nur man hätte nen bisschen was ab ändern müssen. Da es irgend wie nicht vorran geht hab ich das Modell nochmal so angepasst wie ich denke das du es brauchst... auch wenn das nicht Sinn des Forums ist. Falls es imemr noch nicht Funktioniert solltest du dir vllt . die Studentenversion besorgen um die Versions-Probleme aus zuschliessen. MFG Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Homer Simpson Mitglied
Beiträge: 345 Registriert: 14.09.2005
|
erstellt am: 29. Jan. 2008 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
An der Lizenz liegt es bestimmt nicht. Vielleicht exportiert der Werker zu dem Zeitpunkt, wo die Dienste geändert werden sollen, bereits einen Dienst. Das würde erklären, warum es nicht funktioniert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pom Mitglied Dipl.-Ing. (FH)
Beiträge: 182 Registriert: 25.08.2006
|
erstellt am: 29. Jan. 2008 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für kannix777
"eM-Plant führt diese Methode aus, wenn der Baustein dupliziert, abgeleitet, oder in ein anderes Modell eingesetzt (instantiiert) wird." Sollte also nicht der Fall sein, dass der MA bereits einen Dienst ausführt, bevor die Methode ausgeführt wird. Desweiteren kann der MA keinen Dienst ausführen weil er noch keinen eingetragenen Dienst besitzt, da der StandartDienst nicht in der Liste der unterstützen Dienste des MA eingetragen ist. nachtrag: Der StandartDienst sollte natürlich bei ihm nicht in der Liste stehen. [Diese Nachricht wurde von pom am 29. Jan. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kannix777 Mitglied
Beiträge: 10 Registriert: 28.01.2008
|
erstellt am: 29. Jan. 2008 12:54 <-- editieren / zitieren --> Unities abgeben:
Ich habe mal die Studentenversion 7.6 rausgekrammt und es an einem einfachen Modell ausprobiert... UND... ES KLAPPT!!! @pom: Da läuft auch dein Bsp.! Danke nochmal für Deine Mühe. Um es vorwegzunehmen: Das gleiche Modell habe ich nochmals in 7.0 nachgebildet und da gehts nicht. Warum auch immer?! In 7.0 akzeptiert er "(...).exp.setzeDienste" nicht. Schon komisch... Also vielen Dank an alle. Die Lösung heißt also: 'Ne neue Version holen! Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |