Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 39
Jan 252014
 
První díl - Workoutlog v APEXu – hezky od začátku #1 – úvod
Druhý díl - Workoutlog v APEXu – hezky od začátku #2 – návrh datové vrstvy(1)
Třetí díl - Workoutlog v APEXu – hezky od začátku #3 – návrh datové vrstvy(2)
Čtvrtý díl - Workoutlog v APEXu – hezky od začátku #4 – APEX workspace&user

 

Další pokračování, kde se snažím vytvořit nějaký cvičební deníček v APEXu. V minulých dílech (linky výše) jsem nastřelil nějakou datovou vrstvu, vytvořil workspace v APEXu a uživatele pod kterým to budeme vyvíjet. Nyní je třeba založit aplikaci, ověřit uživatele v DB a napráskat tam DDL datové vrstvy.

Takže nejprve založení aplikace v APEXu, přihlásíme se účtem developera založeným v minulém díle na http://localhost:8080/apex nebo jaká je Vaše adresa pro přihlašování se k apexu a z minulého dílu login:

  • Workspace: APEX_WORKOUT
  • Username: APEX_DEVELOPER
  • Password: Developer_0

Chceme vytvořit aplikaci, takže klik na Application Builder, otevře se (viz screen dole) seznam aplikací, které jsou dostupné pod daným workspace, s tím že jsou vidět následující záložky:

  • All Applications – všechny dostupné aplikace na workspace, technicky Database Applications + Websheet Applications. Je vidět ukázková aplikace Sample Database Application
  • Database Applications – uživatel má plnou kontrolu nad vývojem, flow, page renderingem, může používat PL/SQL atd. prostě pro nás programátory - power
  • WebSheet Applications – reporty, nestrukturovaná data, vývojář prakticky neexistuje všechno lze upravovat bez znalosti SQL (i čekhokoliv..) klikačka – light a na prd.
  • Packaged Application – Aplikace připravené k instalaci (Database i WebSheet – teoreticky). Po instalaci jsou dostupné aplikace, které dodává zdarma Oracle. Je možné je naistalovat i odekmknout na modifikaci (pak bez podpory)

Ohledně Sample Database Application – doporučuji kliknout na Tasky a aplikaci odmazat (Delete Application), odinstalace nás zbaví asi 15ti tabulek (DEMO_*) ze schématu APEX_WORKOUT.

Nyní založení nové aplikace kliknutím na “Create” a průvodce:

Vybereme databázovou aplikaci (máme pod tím cca 15 tabulek) a klikneme na Next a pokračujem průvodcem:

  • Application: dávám číslo 666 (pokud následujete, dejte stejné jinak je to jedno)
  • Name: WORKOUT_LOG
  • Schema: APEX_WORKOUT (dědí se z nastavení workspace)
  • Create Options: Start from scratch (začneme od začátku)
  • User Interface: Desktop (druhá verze je pro mobily..)

A nyní zase Next (při Create Application se založí aplikace hned, ovšem s defaultníma attributama) a dostanem se na sekci Pages, kde je možné přidávat stránky do aplikace (stránka = cca webová stránka), což jsou základní stavební prvky APEX aplikace. Vybírám “blank” – prázdnou stránku, kterou jmenuji “main” a dávám add page, ostatní stránky přidáme v průběhu vývoje.


A zase next.. nyní sekce Share Componets – žádné nemáme, takže NO a zase next a následuje nastavení jazyka a autentizace, dávám:

  • Authentication Scheme: Application Express (případně No Authentication, rozhodně se nechci vztekat s dalšíma účtama)
  • Tabs: No Tabs (není potřeba, chci aby aplikace byla sexy a krásná – budu linkovat sám)
  • Language: Czech (cs)
  • User Language: Preference Derivered From: Application Primary Language
  • formáty pro datumové sloupce atd. – něco hezkého jsem si vybral z výběru při kliknutí na šipku, můžete použít jakýkoliv formát z Oracle DB


A opět next do posleního kroku – výběr Theme, jak má by default aplikace vypadat vizuálně (css a barvičky), vybral jsem si Midnight Blue (Theme 3) a naposledy next a měl by se zobrazit následující sumarizační report:


Dole jsem zaškrtl “Save this definition as a desing model for reuse“. Šikovná věcička, jak člověk nebude muset moc klikat až bude chtít začít znovu o začátku nebo vytvořit podobnou aplikaci. A poslední krok je kliknutí na Create Application. A ideálně by to mělo vyhodit:

Application created successfully.

A nás by to mělo vhodit do editace aplikace (Application Builder – Application 666 – Workout Log). A nyní stačí kliknout na Run Application a ověřit si funkčnost. A nebo se něco dozvědět a zkusit si napsat url sám:

http://localhost:8080/apex/f?p=666:1

Takhle vypadá nejjednodušší verze url v APEXu. Kde nejzajímavější část je f?p=666:1, která říká že jde o aplikaci číslo 666 (její ID) a stránku číslo 1. Naše aplikace má dvě stránky, jednu jsme přidávali jako blank a má číslo 1 a druhá byla automaticky vygenerována, když jsme zaškrtli Authentization Sheme jako Application Express a ta by měla mít číslo 101 a to je login page. Takže po otevření stránky http://localhost:8080/apex/f?p=666:1 na nás vyskočí okno s loginem, protože i když se chceme dostat na blank stránku je třeba nás authentizovat.

A klidně použijeme login developera na to se přihlásit:

  • Username: apex_developer
  • Password: Developer_0

A dostaneme se na naší první stránku v APEXu ;) Něco jako hello word. Až do této chvíle je to všechno podstatně delší cesta než něco spáchat v PHP a Apache apod. Ale APEX ukáže svou sílu a rychlost velice brzy.

Fajn! Nyní navrhuji APEX odložit se vrátit k Oracle, PL/SQL a datům ;) Konkrétně naspouštět DDL na schématu APEX_WORKOUT (zatím pouze tabulky). Dá se to udělat v SQL Plus* nebo například v SQL Developeru (lze stáhnout zde: Download SQL Developer)  Uživatele s jeho heslem jsme založili v předchozím díle, takže v SQL Developeru by to mohlo vypadat nějak takto:


Heslo jsme dávali stejné jako název – APEX_WORKOUT. Ve schématu by měly být pouze tabulky APEXu – APEX$_ a nyní je třeba tam narvat ty naše a za článku Workoutlog v APEXu – hezky od začátku #3 – návrh datové vrstvy(2) a to konkrétně tento soubor. A po té možná nějaká kontrola, že všechny tabulky byly správně založeny, třebas takhle:

select
(select 'TABULKY =' ||count(*) from user_tables where table_name like 'TBL%') as tbl,
(select 'SEQUENCE =' ||count(*) from user_sequences where sequence_name like 'SEQ%') as seq
from dual;

Mělo by to vrátit, že je tam 13 tabulek a 13 sekvencí. A když už jsme v SQL Developeru, tak tam hodíme nějaká SEED data pro příště – konkrétně jeden záznam, že jsme jako cvičili do master entity TBL_WORKOUT.  Aby bylo od čeho se v příštím díle odpíchnout.

insert into TBL_WORKOUT(workout_start,workout_end,workout_day,workout_type,note)
values (sysdate,sysdate+2/24,'Hard','Crossfit','Testovací záznam');
commit;
1 rows inserted.
committed.

A to by bylo pro tento díl vše. Takže nyní máme založený workspace ve kterém je připravena prázdná aplikace (respektive má dvě stránky), uživatele pro vývoj a hotovou datovou vrstvu ve správném schématu. A konečně i jeden záznam na zkoušku. Logickým krokem pro příště je udělat možnost editace tabulky TBL_WORKOUT, tedy základní tabulky pro cvičení. Tedy příště část GUI a uděláme tohle.

 Posted by at 21:36

  2 Responses to “Workoutlog v APEXu – hezky od začátku #5 – založení aplikace”

  1. uz se tesim na dalsi dil. Takova otazka, v Database express 10c vse ok, ale jak je to s Database 12c enterprise? stahnul jsem si kuly testum trial verzi na studium, ale bohuzel nemuzu se dopatrat k APEXu… poradite mi?

  2. Ahoj, navrhuju tykání. Poradím, pokud budu vědět. Nejprve na té 12c je nutné rozlištit tu multitent verzi od normální (parametr NONCDB_COMPATIBLE) ptá se to na začátku instalace. Na té multitent (NONCDB_COMPATIBLE=true) nevím, tu jsem si naistaloval na linuxu a APEX jsem tam nikdy nezkoušel – ta konifigurace je trošku komplikovanější – tím, že každé PDB může mít vlastní APEX (jinej port i jinou verzi apexu). Každopádně 12c by měla jako taková APEX obsahovat (po instalaci by tam mělo být schéma APEX_040200 (podle verze) a uživatel APEX_PUBLIC_USER. Takže to by mělo být ok. Po té je třeba změnit to ADMIN heslo – což je script v adresáři APEX: apxchpwd.sql (někde v \product\12.1.0\dbhome_1\apex). Co je důležité pro-cd-ovat se do té složky a spustit to odsud. Alespoň mě nefungovalo spuštění od jinud (nenašlo to další soubory v průběhu scriptu). Pak otočit Oracle (nevím je jestli je třeba, ale nejjednodušší je shutdown immediate /startup – prostě otočit celé oracle, poku je to doma). Pak odekmnout APEX účet: ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK, a ideálně i změnit heslo: ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password. Pak nastavit port: EXEC DBMS_XDB.SETHTTPPORT(8080); A konečně nastavit i ACL politiku – to je novinky, od 11tky (jestli máš 10 tak je to nové). ACL je acess control list – db má by deault zakázánou i outgoing komunikaci, je třeba ji povolit. A na to slouží následující script:

    Pod sys as sysdba:

    DECLARE
    ACL_PATH VARCHAR2(4000);
    BEGIN
    — Look for the ACL currently assigned to ‘*’ and give APEX_040200
    — the “connect” privilege if APEX_040200 does not have the privilege yet.

    SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
    WHERE HOST = ‘*’ AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

    IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, ‘APEX_040200′,
    ‘connect’) IS NULL THEN
    DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
    ‘APEX_040200′, TRUE, ‘connect’);
    END IF;

    EXCEPTION
    — When no ACL has been assigned to ‘*’.
    WHEN NO_DATA_FOUND THEN
    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(‘power_users.xml’,
    ‘ACL that lets power users to connect to everywhere’,
    ‘APEX_040200′, TRUE, ‘connect’);
    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(‘power_users.xml’,’*’);
    END;
    /
    COMMIT;

    Pak bych raději otočil ještě db a mohlo by to fungovat. Škoda, že nepíše konkrétně chybu, co Ti nejde. APEX 4.2 by ale měl být už v instalaci Oracle 12c. Možná jsi měl jinou verzi na 10? takové to pls_mod přes apache apod.?
    -
    Kdyžtak napiš konkrétně kde je problém, pořešíme pohledáme ;)

    S dalším dílem asi budu mít delší pauzu, ale určitě budu pokračovat ;)

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>