Übersetzen Sie

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिनà¥à¤¦à¥€ अनà¥à¤µà¤¾à¤¦ करने के लिà¤/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian

XAM Abfragesprache

Sowie die Lieferung der Verkäufer-unabhängigen Mittel der Schaffung, XSets zurückholend, ändernd und löschend, definiert die SNIA XAM v1.0 Spezifikation auch eine Abfragesprache (XAM QL), basiert auf einer Teilmenge der SQL- Sprache, denn des Vorwählens und des Zurückholens des XUIDs von XSets basiert auf Inhalt-definierten Kriterien.

Der Satz der reservierten Worte für diese Abfragesprache ist ziemlich klein: wählen Sie, wo und, oder nicht wie, existiert, Binden vor, schreibgeschützt, das typeof, Länge, Datum, ZUTREFFENDE, FALSCHE, bevor, nach, enthält, und innen. Mit Absicht sehen XAM Fragen wie eine SQL-auserwählte Aussage aus. Die Abfragesprache ist der unempfindliche Fall und benutzt den ASCII-Zeichensatz.

Ist hier ein Beispiel einer einfachen XAM Frage:

select ".xset.xuid" where "com.example.name" = ’Tuckers Plantation'


Version 1.0 der XAM Spezifikation definiert zwei Niveaus Abfragespracheunterstützung, Niveau 1 des d.h. definiert Niveau-1 und des Niveaus 2. Fragen auf Eigenschaften und Feldattribute in XSets und ist vorgeschrieben. Jeder möglicher XSet Vermögenswert, der zu einem Anwendungsprogramm über die XAM Bibliothek zugänglich ist, kann gefragt werden. Niveau 2 verlängert Niveau 1 auf Stützfragen auf XStreams und ist- wahlweise freigestellt. Beide Niveaus der Frage werden durch eine einzelne, definierte Jobart erreicht, die alle XAM Versorger stützen müssen. Da kein Verkäufer, dass ich bewusst bin, Fragen der wirklich Höhe des Arbeitsgeräts 2 hat, der Rest der Foki dieses Pfostens auf Fragen des Niveaus 1.

Eine XAM Fragenaussage besteht aus einer vorgeschriebenen auserwählten Klausel, die von einem wahlweise freigestellten wo Klausel gefolgt wird. Für XAM v1.0 ist die einzige gültige auserwählte Klausel auserwähltes `.xset.xuid'. Dieses spezifiziert, dass die Anwendung um eine Liste der XUID Werte bittet. Z.B.

select ".xset.xuid "


bringt eine Liste von jedem XSet zurück, das zu der Zeit der Frage lesbar ist.

, wo Klausel verwendet wird, um eine Teilmenge von zusammengepaßt zu werden XSets zu spezifizieren. Für Fragen des Niveaus 1 wird sie auf Vergleiche zwischen XSet Eigenschaften und wörtlichen Werten und/oder Feldattribute und wörtliche Werte eingeschränkt.

select ".xset.xuid" where ".xam.time.xuid" > date(’2009-02-01T00:00:00.0’)


bringt die Liste von allem Xsets zurück, die an oder nach dem 1. Februar 2009 verursacht wurden.

Die folgende Tabelle zeigt, welches Feld und wörtliche Arten gültig verglichen werden können.

xam_intxam_doubleXam_stringxam_datetimexam_xuid
int**
Doppeltes**
Schnur*
Datum/Uhrzeit*
XUID*

Die XAM Bibliothek validiert, dass Schnüre und Schnurliberale anpassende Schnüre UTF-8 sind. Nicht übereinstimmende Druckfehler der Schnur UTF-8 erzeugen eine XAM nichtfatale Fragen-Syntaxstörung. Ausgaben wie einzelnes gegen mehrfache Glyphbuchstaben und nicht Druckzeichen sind nicht spezifiziert und sind Implementierung und anwendungsabhängiges. Schnurvergleiche sind der empfindliche Fall und Vergleichsoperatoren lassen an eine Byte-durchbyte Basis laufen. Für Vergleichsoperatoren werden die Verhältnisse durch die Bytewerte definiert. Alle Datennormalisierung ist die Verantwortlichkeit der Anwendung.

Die gestützten Escape-Folgen sind die folgenden. Jede mögliche andere Escape-Folge erzeugt eine nichtfatale Störung.

\ \Gegenschrägstrich (\)
\ Anführungszeichen (")
\ 'Einzelner Anführungsstrich (')
\ uxxxxEin Unicode Buchstabe im hexadezimalen Format (xxxx)

Schnurdruckfehler müssen mit einzelnen Anführungsstrichen veranschlagen werden. Schnurdruckfehler, die eine oder mehrere Buchstaben des einzelnen Anführungsstriches enthalten, müssen jedem Buchstaben des einzelnen Anführungsstriches unter Verwendung eines Gegenschrägstrichs entgehen. Z.B. ist der Schnurdruckfehler von 'diesem ein Schnur literal würde dargestellt in einer Frage wie
select ".xset.xuid" where "com.example.string-property" = ’This is a string literal’


Um einen einzelnen Anführungsstrich in einer Schnur zu verwenden, schützen Sie sie mit einem Gegenschrägstrich

select ".xset.xuid" where "com.example.claimed.ownership" = ’Tucker\’s’


Alle Fälle der Feldnamen in einer XAM Fragenschnur müssen mit Anführungszeichen veranschlagen werden. Wenn ein Feldname Anführungszeichenbuchstaben enthält, muss jeder Anführungszeichenbuchstabe unter Verwendung eines Gegenschrägstrichs entgangen werden. Z.B. der Feldname für das xam_boolean Eigentum com.example. das Qstring sollte in einer Frage wie dargestellt werden

select ".xam.xuid" where "com.example.\"qstring\"" = TRUE


Wenn ein Feldname einen Gegenschrägstrichbuchstaben enthält, muss der Gegenschrägstrich selbst mit einem anderen Gegenschrägstrich entgangen werden. Z.B. sollte der Feldname für das xam_double Eigentum com.example.file \ Verhältnis in einer Frage wie dargestellt werden

select ".xam.xuid" where "com.example.file\\ratio" = 100.1


Die Abfragesprache nimmt Datum/Uhrzeit an und XUID-bewertete Druckfehler unter Verwendung der Wählfunktionen datieren () und xuid () beziehungsweise. Die Funktion des Datums () nimmt einen richtig gebildeten Datum/Uhrzeit-Wert, spezifiziert da eine wörtliche Schnur, die mit der XAM Datum/Uhrzeitspezifikation in Einklang ist.

select ".xset.xuid" where ".xam.time.xuid" = date(’2009-06-01T00:00:00.0’)


Die xuid () Funktion erwartet ein XUID, das in Form eines base64 verschlüsselten Schnurdruckfehlers ist. Ein unsachgemäß gebildeter Schnurdruckfehler erzeugt eine nichtfatale Störung während der Fragensatzgliederung.

Feldattribute werden unter Verwendung existiert, typeof, Read-only, Schwergängigkeit und LängenFeldattribut Accessorfunktionen erreicht. () Existiert Funktionstests für das Bestehen eines genanntes Feldattributs (Eigentum) in einem XSet. Es wertet aus, um AUSZURICHTEN, wenn ein XSet das genannte Feld enthält, anders, das es FALSCHES auswertet.

select ".xset.xuid" where exists("com.example.name")


Die typeof () Funktion bringt die MIME-Art eines genannten Feldes in einem XSet zurück, das ein Schnur-bewertetes Eigentum ist.

select ".xset.xuid" where typeof("com.example.data") = ’text/plain’
select ".xset.xuid" where typeof("com.example.data") like ’text%’


Diese Funktion kann verwendet werden, wann immer eine Anwendung einen Feldhinweis auf einem Schnur-bewerteten Eigentum verwenden könnte. Merken Sie, dass Vergleiche mit jedem Nichtschnur wörtlichen Wert eine nichtfatale Störung während der Satzgliederung der Frage erzeugen.

Die Read-only () Funktion wertet aus, um AUSZURICHTEN, wann ein Feld in einem XSet markiert wird, wie schreibgeschützt.

select ".xset.xuid" where readonly("com.example.flag")
select ".xset.xuid" where not readonly("com.example.name")


Die verbindliche () Funktion wertet aus, um AUSZURICHTEN, wann ein Feld in einem XSet markiert wird, wie binden.

select ".xset.xuid" where binding("com.example.case_id")
select ".xset.xuid" where not binding("com.example.subject")


Die Funktion der Länge () bringt die Länge, in den Bytes, eines genannten Feldes zurück.

select ".xset.xuid" where length("com.example.data") > 1024


Wenn Sie auf Eigentum verwendet werden, fängt Rückkehr dieser Funktion die Länge auf, wie für stypes definiert. Merken Sie, dass diese Funktion nicht verwendet werden sollte, um die Zahl Buchstaben in einer Schnur zu vergleichen, während dieser Vergleich von der Buchstabenkodierung abhängt, die verwendet wird.

An logische Operatoren jetzt sich wenden. Subclauses innerhalb, wo Klausel durch die Anwendung der logischen Operatoren kombiniert werden und geändert werden kann und oder und nicht. Diese Operatoren sind ihren SQL-Gegenstücken ähnlich.

Und Operator erfordert beide Subclauses auszuwerten, um einschließlich ein XSet in den Resultaten vorher AUSZURICHTEN. Z.B.

select ".xset.xuid" where typeof("com.example.stream") = ’image/gif’ and length("com.example.stream") > 4096


wählt nur jenes XSets vor, das GIF-Bilder enthält, deren Größe größer als 4096 Bytes ist. Oder Operator wertet aus, um AUSZURICHTEN, wenn jeder Subclause auswertet, um AUSZURICHTEN. Z.B.

select ".xset.xuid" where typeof("com.example.stream") = ’image/jpeg’ or typeof("com.example.stream") = ’image/gif’


wählt nur jenes XSets vor, das einen genannten Strom der Bildart JPEG oder GIF enthält. Der nicht Operator verneint einen Booleschen Ausdruck. Z.B.

select ".xset.xuid" where not binding("com.example.property")


wählt alles XSets mit dem nonbinding Eigentum com.example.property vor.

Wie in SQL-bestimmten Operatoren haben Sie Vorrang vor anderen Operatoren in den Fragen. XAM QL Operatorenrangfolge ist, wie folgt:

VORAUSGEHENOPERATOR
1existiert, schreibgeschützt, typeof, Länge, Schwergängigkeit, +, -
2= <>, >, >=, <>
3nicht
4und
5oder

Operatoren des gleichen Vorausgehens sind innerhalb einer Frage ausgewertetes von links nach rechts verlaufendes. Jedoch kann Operatorenrangfolge unter Verwendung der Klammern durch das folgende Beispiel wie gezeigt aufgehoben werden.
select ".xset.xuid" where not "com.example.bool-prop" and  "com.example.int-prop" = 64
select ".xset.xuid" where not ("com.example.bool-prop" and "com.example.int-prop" = 64)


Im ersten Beispiel trifft der nicht Operator nur auf das com.example.bool-prop Eigentum zu. Im zweiten Beispiel trifft der nicht Operator auf com.example.bool-prop und com.example.int-prop = 42 zu.

Nun da wir mit XAM QL Syntax ein wenig vertraut sind, ist die folgende geantwortet zu werden Frage, wie wir ein XAM Speicher-System erklären, eine Frage durchzuführen und die Resultate zu uns zurückzubringen. Gut fällt sie aus, dass eine Frage durchgeführt wird, wie eine bestimmte Art XAM Job einen Fragenjob benannte. Der Eingang zu einem Fragenjob ist ein XSet, das Sie verursachen müssen. Dieses XSet muss zwei Einzelteile enthalten - das Feld-org.snia.xam.job.com mand, das immer auf `xam.job.query und ein XStream xam.job.query.com mand eingestellt wird, das ein Strom des Textes UTF-8 ist (MIME-Art `Text/normales; charset=utf-8') Enthalten der tatsächlichen Fragenausdruckschnur.

Ein Fragenjob kann vor oder während der Durchführung des Jobs beliebig festgelegt werden, aber dieser legen wird angefordert nicht fest. Die Fähigkeit, einen laufenden Job festzulegen ist wahlweise freigestelltes und Implementierungsabhängiges. Eine Anwendung kann feststellen, wenn Job wird gestützt festlegen, indem er das XSystem Boolesche Eigentum .xsystem.job.com mit.supported überprüft. Störung, einen Fragenjob, bevor sie das XSet, festzulegen schließt bedeutet, dass die Resultate des Fragenjobs nicht hartnäckig gespeichert werden.

Ein Fragenjob wird durchgeführt, indem man submitJob hervorruft. Wenn irgendein der zwei erforderlichen Einzelteile im Fragenjob XSet nicht richtig ausgefüllt wird, wird das Standardjobstörungsfeld .xam.job.error dem Fragenjob XSet hinzugefügt und es ist Wert wird eingestellt auf jedes org.snia.xam:: not_a_job oder org.snia.xam:: unspecified_command und der Fragenjob wird abgebrochen. Wie in dem Anwendungsbeispiel gezeigt unten, kann der Zustand eines Fragenjobs festgestellt werden, indem man den Wert von .xam.job.status überprüft.

Wenn ein Fragenjob erfolgreich ist, werden die Resultate im Fragenjob XSet in Form eines neuen XStream gespeichert, das xam.job.query.results genannt wird. Dieses XStream hat eine MIME-Art Anwendung/vnd.snia.xam.query.xuid_list und enthält das XUIDs für den Satz von XSets, resultierend aus der Auswertung der Frage. Jedes XUID wird in einem binären Format als Teil einer 80-Byte-Aufzeichnung gespeichert. Wenn ein XUID kürzer als 80 Bytes ist, ist die Aufzeichnung null aufgefüllt zu 80 Bytes.

Einige andere Eigenschaften in Bezug auf die Resultate XStream werden auch gegründet. Das xam_int Eigentum xam.job.query.results.count enthält den gegenwärtigen Zählimpuls der XUID Aufzeichnungen in den Resultaten XStream. Dieses Eigentum wird aktualisiert, während Resultate in die Resultate XStream während der Fragenverarbeitung eingeführt werden. Eine Anwendung kann dieses verwenden, um Statusangaben zu den Benutzern zur Verfügung zu stellen, während der Fragenjob durchführt. Das xam_string Eigentum xam.job.query.level zeigt das Fragenniveau an, das die Resultate zusammenbringt. Sein Wert ist entweder org.snia.xam.job.query.level.1 oder org.snia.xam.job.query.level.2.

Es ist wichtig, sich daran zu erinnern, dass ein Fragenjob innerhalb der Rollen und der Erlaubnis funktioniert, die dem Anschluss bewilligt werden. Das bedeutet, dass die Resultate XStream nur jenes XSets umfaßt, die sichtbar und zu einer Anwendung, mindestens von einer gelesenen Perspektive, entsprechend der Rolle zugänglich sind, unter der der Fragenjob durchgeführt wird.

Der Fragenjob kann die folgenden Störungscodes in .xam.job.error einstellen:

xam.job.query:: level_not_supportedDas XAM Speicher-System ist nicht imstande, das Fragenniveau zu stützen, das im Fragenjob spezifiziert wird. Eine nichtfatale Störung.
xam.job.query:: invalid_command_syntaxEine nichtfatale Syntaxstörung trat bei der Satzgliederung der Fragenschnur auf
xam.job.query:: insufficient_permissionDer z.Z. beglaubigte Benutzer hat nicht genügendes
Erlaubnis, den Fragenjob durchzuführen
xam.job.query:: insufficient_resourcesDas XAM Speicher-System hat nicht die genügenden Betriebsmittel, zum des Fragenjobs abzuschließen

Wenn ein Fragenjob aus welchem Grund auch immer eingestellt wird, werden die Standardjobgesundheit und Statusfelder, d.h. .xam.job.errorhealth und .xam.job.status, eingestellt, um Werte zu verwenden und das XAM Speicher-System kann null oder setzen zusätzlicheres XUIDs in den Resultaten XStream. So sollte eine Anwendung komplette XUID Werte in den Resultaten XStream immer sehen. Das Wieder.aufnehmen eines eingestellten Fragenjobs wird nicht gestützt.

Merken Sie, dass, anders als ein traditionelles RDBMS, es keine Blockierung eines XAM Speicher-Systems während der Durchführung eines Fragenjobs gibt. So ist ein Fragenresultat nicht ein blitzschneller Schnappschuß eines XAM Speicher-Systems. Der Inhalt eines XAM Speicher-Systems kann oder kann möglicherweise nicht ändern, während ein Fragenjob durchgeführt wird. Die allgemeine Regel ist, dass kein XSet, das gespeichert worden ist, bevor der Anfang des Fragenjobs in den Resultaten XStream eingeschlossen ist, wenn er die Fragenkriterien erfüllt und kein XSet, das gespeichert worden ist, nachdem der Fragenjob abgeschlossen hat, nicht in den Resultaten XStream eingeschlossen werden soll. XSets, das während der Fragenjobdurchführung gespeichert werden, kann oder kann möglicherweise nicht enthalten sein. Die gleichen Kriterien trifft auf die Resultate XStream zu. Es kann XUIDs von XSets mit einschließen, das nicht mehr im XAM Speicher-System und im XUIDs von XSets sind, das nicht mehr die Suchkriterien wegen einer Änderung im XSet erfüllen, nachdem die Einzelheit XSet gefragt wurde.

Ist hier eine einfache Java-Anwendung, die ein XAM Speicher-System fragt, um es festzustellen ist Niveau der Unterstützung für XAM Fragen.

import org.snia.xam.XAMException;
import org.snia.xam.XAMLibrary;
import org.snia.xam.XSystem;
import org.snia.xam.toolkit.XAMXUID;
import org.snia.xam.util.XAMLibraryFactory;

public class CheckQuerySupport
{
    private static XAMLibrary xamLib;
    private static XSystem xSystem;

    public static void main(String[] args)
    {
        String xri = "snia-xam://centera_vim!XXX.XXXX.XXX.XXX?/home/fpm/xam/xamconnect.pea";

        long exitCode = 0;
        boolean isSupported = false;

        try
        {
            xamLib = XAMLibraryFactory.newXAMLibrary();
            System.out.println("Connecting to XSystem: " + xri + "\n");

            xSystem = xamLib.connect(xri);

            // support job commit?
            isSupported = xSystem.getBoolean(XSystem.XAM_XSYSTEM_JOB_COMMIT_SUPPORTED);
            System.out.println("Support job commit? " + (isSupported ? "Yes" : "No"));

            // support continuance of job?
            isSupported = xSystem.getBoolean(XSystem.XAM_XSYSTEM_JOB_QUERY_CONTINUANCE_SUPPORTED);
            System.out.println("Support job continuance? " + (isSupported ? "Yes" : "No"));

            // support level 1 query?
            isSupported = xSystem.getBoolean(XSystem.XAM_XSYSTEM_JOB_QUERY_LEVEL1_SUPPORTED);
            System.out.println("Support level 1 query? " + (isSupported ? "Yes" : "No"));

            // support level 2 query?
            isSupported = xSystem.getBoolean(XSystem.XAM_XSYSTEM_JOB_QUERY_LEVEL2_SUPPORTED);
            System.out.println("Support level 2 query? " + (isSupported ? "Yes" : "No"));

            xSystem.close();
            System.out.println("\nClosed connection to XSystem");

        } catch (XAMException xe) {
            exitCode = xe.getStatusCode();
            System.err.println("XAM Error occured: " + xe.getMessage());
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            exitCode = 1;
        }

        System.exit((int) exitCode);
    }
}


Ist hier der Ausgang von dieser Anwendung, wenn er an ein Speicher-System EMC-Centera XAM angeschlossen wird

Connecting to XSystem: snia-xam://centera_vim!XXX.XXX.XXX.XXX?/home/fpm/xam/xamconnect.pea

Support job commit? No
Support job continuance? No
Support level 1 query? Yes
Support level 2 query? No

Closed connection to XSystem


Ist hier eine längere Java-Anwendung, die die drei Probe XSets und die Beispielfragen einführt, die in Abschnitt 10.8 des Dokuments der XAM Architektur V1.0 besprochen werden.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.snia.xam.XAMException;
import org.snia.xam.XAMLibrary;
import org.snia.xam.XSet;
import org.snia.xam.XStream;
import org.snia.xam.XSystem;
import org.snia.xam.XUID;
import org.snia.xam.toolkit.XAMXUID;
import org.snia.xam.util.XAMLibraryFactory;

public class QueryExample
{
    private static XAMLibrary xamLib;
    private static XSystem xSystem;

    private static void CreateXset(int parm1, String parm2, double parm3)
             throws XAMException
    {
        System.out.print("Create XSet 1 ....  ");

        XSet xSet = xSystem.createXSet(XSet.MODE_UNRESTRICTED);
        xSet.createProperty("com.example.rhc", false, true);
        xSet.createProperty("com,example.foo", false, parm1);
        xSet.createProperty("com.example.bar", false, parm2);
        xSet.createProperty("com.example.num", false, parm3);

        XUID xuID = xSet.commit();
        System.out.println("XUID: " + xuID.toString());

        xSet.close();
    }

   private static void CreateXset(int parm1, int parm2, int parm3)
             throws XAMException
    {
        System.out.print("Create XSet 2 ....  ");

        XSet xSet = xSystem.createXSet(XSet.MODE_UNRESTRICTED);
        xSet.createProperty("com.example.rhc", false, true);
        xSet.createProperty("com,example.foo", false, parm1);
        xSet.createProperty("com.example.bar", false, parm2);
        xSet.createProperty("com.example.num", false, parm3);

        XUID xuID = xSet.commit();
        System.out.println("XUID: " + xuID.toString());

        xSet.close();
    }

    private static void CreateXset(int parm1, int parm2)
             throws XAMException
    {
        System.out.print("Create XSet 3 ....  ");

        XSet xSet = xSystem.createXSet(XSet.MODE_UNRESTRICTED);
        xSet.createProperty("com.example.rhc", false, true);
        xSet.createProperty("com,example.foo", false, parm1);
        xSet.createProperty("com.example.num", false, parm2);

        XUID xuID = xSet.commit();
        System.out.println("XUID: " + xuID.toString());

        xSet.close();
    }

    private static void QueryXsystem(String queryString)
            throws XAMException
    {
        boolean finished = false;
        final int XAM_MAX_XUID = 80;
        int resultCount = 0;
        String status;

        System.out.println("Create query XSet. Query string: " + queryString);

        XSet query = xSystem.createXSet(XSet.MODE_UNRESTRICTED);
        query.createProperty(XSet.XAM_JOB_COMMAND, true, XSet.XAM_JOB_QUERY);

        byte[] buffer = queryString.getBytes();
        XStream queryStream = query.createXStream(XSet.XAM_JOB_QUERY_COMMAND, true, XAMLibrary.TEXT_PLAIN_MIME_TYPE);
        queryStream.write(buffer);
        queryStream.close();

        System.out.println("Submit query job ....");
        query.submitJob();

        System.out.println("Wait for query job to finish ....");

        while (!finished)
        {
            // check  status of query job
            status = query.getString(XSet.XAM_JOB_ERRORHEALTH);
            if (status.equals(XSet.XAM_JOB_ERRORHEALTH_ERROR))
            {
                System.out.println("ERROR: Errorhealth - " + query.getString(XSet.XAM_JOB_ERROR));
                query.haltJob();
                System.out.println("ERROR: Job halted");
                break;
            }

            status = query.getString(XSet.XAM_JOB_STATUS);
            resultCount = (int) query.getLong(XSet.XAM_JOB_QUERY_RESULTS_COUNT);

            // uncomment if you want continuous job status
            // System.out.println("Job Status: " + status + "  Result count: " + resultCount);

            // exit loop if job complete
            if (status.equals(XSet.XAM_JOB_STATUS_COMPLETE))
            {
                finished = true;
            }
       }

        System.out.println("Query job completed ....");
        System.out.println("Result set final count is: " + resultCount);

        if (resultCount > 0)
        {
             // open query job result stream
             XStream results = query.openXStream(XSet.XAM_JOB_QUERY_RESULTS, XStream.MODE_READ_ONLY);

             byte rawXUID[] = new byte[XAM_MAX_XUID];
             long bytesRead = 0;

             // output XUIDs in result set
             while( (bytesRead = results.read(rawXUID, XAM_MAX_XUID)) >= 0 )
             {
                 XAMXUID resultXUID = new XAMXUID(rawXUID);
                 System.out.println("XUID: " + resultXUID.toString());
             }

             results.close();
        }

        query.close();
    }

    public static void main(String[] args)
    {
        String xri = "snia-xam://centera_vim!XXX.XXX.XXX.XXX?/home/fpm/xam/xamconnect.pea";
        long exitCode = 0;

        try
        {
            xamLib = XAMLibraryFactory.newXAMLibrary();

            // uncomment next 2 lines if you want extensive XAM Library logging
            // xamLib.setProperty(XAMLibrary.XAM_LOG_VERBOSITY, 1);
            // xamLib.setProperty(XAMLibrary.XAM_LOG_LEVEL, 5);

            System.out.println("Connecting to XSystem " +  xri + "\n");

            xSystem = xamLib.connect(xri);
            xSystem.setProperty(".xsystem.log.verbosity", 1);
            xSystem.setProperty(".xsystem.log.level", 5);

            CreateXset(1, "string", 123.55);
            CreateXset(77, 42, 100);
            CreateXset(6, 200);

            xSystem.close();

            System.out.println("\nClose/reopen XSystem\n");

            xSystem = xamLib.connect(xri);

            // uncomment one or more of the following queries
            // QueryXsystem("select \".xset.xuid\"");
            QueryXsystem("select \".xset.xuid\" where (\"com.example.foo\" > 0) and (\"com.example.foo\" < 50)");
            // QueryXsystem("select \".xset.xuid\" where (\"com.example.bar\" > 0) and (\"com.example.bar\" < 100)");
            // QueryXsystem("select \".xset.xuid\" where exists (\"com.example.bar\")");
            // QueryXsystem("select \".xset.xuid\" where \"com.example.bar\" like '%ing%'");
            // QueryXsystem("select \".xset.xuid\" where \"com.example.num\" >= 124");
            // QueryXsystem("select \".xset.xuid\" where \"com.example.num\" >= 124.6 ");
            // QueryXsystem("select \".xset.xuid\" where (\"com.example.num\" >= 123) and typeof(\"com.example.num\") = 'application/vnd.snia.xam.int'");

            xSystem.close();
            System.out.println("\nClosed connection to XSystem");

        } catch (XAMException xe) {
            exitCode = xe.getStatusCode();
            System.err.println("XAM Error occured: " + xe.getMessage() + "("
                    + exitCode + ")");
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            exitCode = -1;
        }

        System.exit((int) exitCode);
    }
}


Merken Sie, dass Resultate XStream, das durch einen Fragenjob produziert wird, durch eine Anwendung verbraucht werden können, bevor das XAM Speicher-System beendet hat, alles XUIDs in den Resultaten XStream zu speichern, wenn XStream.asyncRead anstelle von XStream.read verwendet wird.

Gut denke ich, dass ich genügende Informationen und Beispiele zur Verfügung gestellt habe, um Ihnen zu ermöglichen, Spiel mit der XAM Abfragesprache durch selbst zu gehen. Sie Sie benötigt die Hilfe, die ich ist, ist sicher, dass die XAM Entwickler-Gruppe auf Google-Gruppen mehr als glücklich, Ihnen zu helfen ist.

In der Trennung würde ich unterstreichen, dass, da XAM Speicher-Systemsversorger z.Z. nur angefordert werden, Unterstützung für Fragen über den zufriedenen Metadaten einzuführen, ich vermute, dass Unterstützung für tatsächliche voll Inhalt-gegründete Suchen unter Verwendung XAM möglicherweise nicht eine Zeitlang auftreten kann.

Lassen Sie eine Anmerkung