Questions & Answers

SOLVED
plamka
I'm new here

Doppelete Titel in der Datenquelle verhinden

Jump to solution

Hallo,

ich stehe vor dem folgenden Problem und hoffe einer von Euch kann mir helfen.

Ich mรถchte beim Speichern von einem Datensatz in der Datenquelle prรผfen ob der Titel bereits vergeben ist.

Die Umsetzung wรผrde ich gerne mit einer RULE machen.

<RULE>

    <SCHEDULE service="RecipeTitleValidator" id="rep1" delay="0">

         <PARAM name="title">

            <PROPERTY source="st_title" name="VALUE"/>

         </PARAM>

    </SCHEDULE>

    <DO>

        <VALIDATION>

            <PROPERTY source="st_title" name="VALID"/>

            <MESSAGE lang="*" text="Der Name ist bereits vergeben!"/>

        </VALIDATION>

    </DO>

</RULE>

Der Service RecipeTitleValidator wรผrde wie folgt aussehen

public class RecipeValidationService implements ValueService {

    @Override

    public Object getValue(final SpecialistsBroker broker, final Map<String, ?> parameters) {

        //TODO Prรผflogik

        return false;

    }

}

Ich habe nur eine Frage, wie bekomme ich an den Service die aktuelle FS_ID von dem Datensatz รผbergeben?

Den aktuellen Datensatz muss ich fรผr die Prรผfung ja ausschlieรŸen.

Vielen Dank

1 Solution

Accepted Solutions

Hallo David,

konntest du dein Problem mit einem hรถheren Delay lรถsen?

Wenn ja, wรคre es schรถn, wenn du Michaels Antwort als "richtige Antwort" markierst, damit andere Benutzer mit dem gleichen Problem die Lรถsung leicht finden kรถnnen.

GrรผรŸe,

Hannes

View solution in original post

0 Kudos
8 Replies
mbergmann
Crownpeak employee

Hallo David,

reden wir hier vom CC, vom SA oder von beidem?

Vielleicht hilft dieses Posting (und das darin verlinkte, das die "Basis" erklรคrt) weiter?

Viele GrรผรŸe

Michael

0 Kudos

Hi Michael,

von beiden.

Gruss

david

0 Kudos
mbergmann
Crownpeak employee

Hi David,

dann sollten die verlinkten (s.o.) Postings helfen (ich hatte die Links nachtrรคglich eingefรผgt).

Viele GrรผรŸe

Michael

0 Kudos

Hi,

vielen Dank fรผr die Tipps. Ich habe die Regel implementiert, die ID des Datenquelleneintrags erhalte ich auch bereits.

<RULE>

        <SCHEDULE delay="100" id="rep1" service="RecipeValidationService">

            <CONDITION>

                <PROPERTY name="FOCUS" source="titel"/>

            </CONDITION>

            <PARAM name="title">

                <PROPERTY name="VALUE" source="titel"/>

            </PARAM>

        </SCHEDULE>

        <DO>

            <VALIDATION scope="SAVE">

                <PROPERTY name="VALID" source="titel"/>

                <MESSAGE lang="*" text="Der Rezepttitel ist bereits vergeben!"/>

            </VALIDATION>

        </DO>

    </RULE>

Ich hรคtte noch eine letzte Frage.  Ich wรผrde gerne den Service nur beim Verlassen des FOCUS auf dem Feld titel antriggern. Geht das รผberhaupt?

0 Kudos
mbergmann
Crownpeak employee

Hi David,

nein, eine Regel nur "beim Verlassen" eines Feldes auszufรผhren geht nicht. Das liegt letztlich daran, dass mit den Regeln keine Events verbunden werden kรถnnen sondern quasi nur "Zustรคnde", die man abfragen kann.

Viele GrรผรŸe

Michael

0 Kudos

Ahh OK, vielen Dank.

Das ist natรผrlich relativ unglรผcklich, beim schnellen Tippen werden dadruch die Aktionen unterbrochen.

Dadurch kommt es zu dem folgenden Fehler.

FSVersion=5.2.312.72667#3807;JDK=1.8.0_91 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=09.03.2017 13:46:23

de.espirit.common.InterruptedError: java.lang.InterruptedException

    at de.espirit.firstspirit.client.io.ServerCaller.handleCallException(ServerCaller.java:619)

    at de.espirit.firstspirit.client.io.ServerCaller.call(ServerCaller.java:594)

    at de.espirit.firstspirit.client.io.ServerCaller.call(ServerCaller.java:408)

    at de.espirit.firstspirit.client.io.ServerCaller.doManagerCall(ServerCaller.java:508)

    at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:477)

    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:58)

0 Kudos
mbergmann
Crownpeak employee

Hmm, das finde ich jetzt eher seltsam. Die FS-Version ist allerdings auch รผber ein Jahr alt (sonst hรคtte ich vorgeschlagen hier unseren TechSupport zu fragen).

Hast Du mal versucht, den delay-Parameter zu รคndern?

Hallo David,

konntest du dein Problem mit einem hรถheren Delay lรถsen?

Wenn ja, wรคre es schรถn, wenn du Michaels Antwort als "richtige Antwort" markierst, damit andere Benutzer mit dem gleichen Problem die Lรถsung leicht finden kรถnnen.

GrรผรŸe,

Hannes

0 Kudos

Type a product name