Raktárak

Tárolók

A nyílt architektúra lényeges része. A beolvasott forráskódok is ebbe a strtuktúrába töltödnek be, és kérdezhetőek le. Kulcs/érték alapon adatokat lehet tárolni bennük. Lehetnek nyílt (osztott) elérésűek.

Célok:

  • adatot lehet megosztani különböző folyamatok között,

  • a transzformációhoz keresési információkat gyorstárazhatják,

  • csomagokat lehet importálni, akár dinamikus (igény szerinti) betöltéssel

  • a végrehajtáshoz szükséges futtatható kódot tárolhatják.

Lekérdezés

Lekérdezéseket szabadon lehet megvalósítani, de az egyszerűség kedvéért projektekhez és raktárakhoz egy pici DSL alapú bővítés készült. A *query definíciók automatikusan metódusokká transzformálódnak. Keresési feltételek bővíthetőek.

Lekérdezés megvalósítás:

    *class TestQuery {
        *method bool testIntegerButNot5 (Node value) {
            *if (value.@type != "Data::Int32")
                *return false;
            *return *cast<Data::Int32>(value) != 5;
        };
        *query query1 (System::Repository repository) {
            *for a
                *where
                    testIntegerButNot5(a)
                *return "0" + a.@string;
        };
    };

Lekérdezés használata:

    *function test () {
        System::Respository repository;
        repository.storeItem("one", 1);
        repository.storeItem("two", 2);
        repository.storeItem("five", 5);
        repository.storeItem("six", "six");

        Query::Result result := TestQuery().query1(repository);
        *foreach (Data::Int32 value: result.container) {
            System::stdout("Query result: %1\n"[value]);
        }
    };

Csomag betöltés

A raktár tartalmát előre elkészített csomagok betöltésével is bővíteni lehet. Jelenleg csak Modema/Lang nyelven megírt tartalom betöltésére van lehetőség.