Thursday, June 26, 2008

เริ่มต้นกับ Oracle BI Publisher 10.1.3.3

หลังจากไปบวชมาพอสึกออกมาก็ตกกะใจกับความเปลี่ยนแปลงของโลกไม่คิดว่าเวลาที่หายไปเดือนครึ่งจะทำให้โลกมันเปลี่ยนไปได้มากขนาดนี้ น้ำมันจากประมาณ 30บาทมาเป็น 40 นอกจากนั้นยังมีการกลับมาของกลุ่มพันธมิตรอีก ไม่คิดว่าโลกที่เราเคยอยู่มันวุ่นวายถึงขนาดนี้ ต่างจากโลกที่ไปบวชมากจริงๆ พอกลับมาทีแรกก็มึนๆ เพราะนอกจากภายนอกเขาจะเปลี่ยนแปลงกันแล้วภายในบ้านเราก็เปลี่ยนไปด้วย อยู่ดีๆแม่ก็มาบอกว่ากำลังทำบ้านอยู่ให้เราเปลี่ยนห้องกับพี่ชายเพราะห้องนอนของพี่ชายนั้นมีเสียงดังทำให้หลานชายวัยกำลังซนไม่เคยอยู่กับที่นอนได้ไม่เต็มที่ ไม่คิดเลยว่าเวลาแค่เดือนครึ่งจะทำให้หลายสิ่งหลายอย่างเปลี่ยนแปลงไปมากขนาดนี้

ยังไม่หายมึนดีอากู๋ก็เอางานมาบอกเนื่องจากเห็นว่าเรากำลังว่างอยู่เพราะลาออกไปบวชให้เราไปดู XML Publisher เด๋วเขาอาจจะให้เราไปช่วยงานเขา เราก็เลยได้มีโอกาสเข้ามาดูโดยที่เราก็เคยดูคร่าวๆมาบ้างแล้ว จำไม่ได้ว่าในตอนแรกที่เขียนเกี่ยวกับ XML Publisher ไปนั้น Oracle ออกถึง Version ไหนแล้ว แต่ที่แน่ๆคือเขาเปลี่ยนชื่อมาเป็น BI Publisher แล้ว

เริ่มต้นเราก็ไป Download ตัว BI Publisher มาก่อนที่นี่ เลือก version 10.1.3.3.3 มาเลยครับ เนื่องจากผมทำบน Windows XP ก็เลือกตัว BI Publisher 10.1.3.3.3 for Windows x86 ที่มีขนาด 725 MB มา หลังจากนั้นเราก็ทำการติดตั้งได้เลย



ก่อนที่เราจะเริ่มนั้นเราก็ไป Start OC4J ขึ้นมาก่อน แล้วเข้าไปที่ http://server:port/xmlpserver ซึ่งก็จะเป็นหน้าสำหรับให้เรา Login เข้าตัว Oracle BI Publisher Enterprise ได้ หลังจากนั้นเราก็ Login เข้าไป



ผมได้ใช้ User ใหม่ที่สร้างขึ้นมา Login เข้ามาเพื่อที่จะสร้าง Report โดยที่ User ที่ใช้ Login เข้ามาจะต้องได้สิทธิในการใช้ Datasource ตัวที่เราจะไว้ใช้ในการดึงข้อมูลขึ้นมานอกจากนั้นยังจะต้องมี Role ในการสร้าง Develope ด้วย ซึ่งไว้วันหลังจะนำมาเสนอนะครับ หลังจากที่เรา Login เข้ามา เราจะเห็นว่าที่หน้าจอเราจะมีอยู่สอง Folder ซึ่งให้เรากดเข้าไปที่ My Folders เมื่อกดเข้ามาแล้วเราจะพบว่าข้างใน Folder ยังไม่มีอะไร ให้เราเลือก Create A New Report ในส่วนของ Folder and Report Tasks



หลังจาก Click ที่ Create A New Report แล้วเราก็ใส่ชื่อของ Report ใน Input Tโext ที่ขึ้นมา แล้วกดที่ปุ่ม Create โดยที่ Report ที่จะสร้างเป็นตัวอย่างนี้จะใช้ schema HR เป็นข้อมูลที่จะเอามาใช้ โดยที่หลังจากเรากดปุ่ม Create แล้ว จะปรากฎ Report ขึ้นใน Folder ให้เรากด Edit



หลังจากนั้นเมื่อเรากดเข้ามาแล้วเราจะเห็นว่าใน Report นั้นจะประกอบไปด้วยส่วนต่างๆ ได้แก่ Datasource, List Of Value, Parameters และ Layout โดยที่เราจะต้องไปกำหนดข้อมูลในส่วนต่างๆเพื่อให้เราสามารถที่จะ Run Report ออกมาได้ โดยเริ่มแรกให้เลือกไปที่ Data Model ก่อนหลังจากั้นก็กด New เพื่อที่จะสร้าง Data Model ขึ้นมา



ในขั้นตอนถัดมาให้กำหนดข้อมูลของ Data Model ที่เราสร้างขึ้นมาใหม่ โดยที่เราจะกำหนดค่าต่างๆดังนี้
  • กำหนด Name

  • กำหนดว่า Type นั้นเป็นอะไร โดยในตัวอย่างจะกำหนดเป็น SQL Query

  • กำหนด Data Source ว่าจะใช้ Source ของข้อมูลจากที่ไหน โดยให้กำหนด Data Source ที่ไว้ใช้ Connect กับ hr schema ใน Database

  • กำหนด SQL Query โดยให้กำหนดตามนี้


  • select dept.department_name
    , emp.first_name||' '||emp.last_name employee_name
    , emp.salary
    , emp.job_id
    from employees emp , departments dept
    where emp.department_id = dept.department_id



    หลังจากนั้นเรากด Save แล้วลอง view ดูเราจะเห็นข้อมูลแสดงมาในรูปแบบของ XML ซึ่งเราสามารถที่จะ Export ออกมาได้



    ในคราวหน้าจะมานำเสนอวิธีกำหนดพารามิเตอร์ให้กับ Report และการสร้าง Layout อย่างง่ายให้ครับ

    Saturday, October 13, 2007

    Oracle XML Publisher 5.6.2 [1]

    หากว่าใครได้เคยมีโอกาศได้ใช้ Oracle XML Publisher คงจะรู้ว่ามันคือ Report Tool ที่ Oracle ได้เอาไว้ใช้ในการจัดกับ Layout ของ Report โดยในการใช้งานนั้น Oracle ได้นำมาใช้ครั้งแรกใน Oracle E-Business Suite 11.5.10 โดยหน้าที่ของ XML Publisher ก็คือการจัดรูปแบบของเอกสารที่เป็น XML ซึ่งหากว่าในระบบมีการใช้งาน XML ก็จะนำ XML Publisher นี้ไปใช้ได้ ซึ่งนั่นหมายถึง Web Service ด้วยครับ

    ใน Oracle XML Publisher 5.6.2 นี้ ได้มี API ที่ไว้สร้าง XML เพื่อเป็น Datasource ให้กับ Report ขึ้นมา ซึ่งเราจะมาดูกันว่าหากเราจะสร้าง Datasource นั้นเราจะต้องทำอย่างไร

    1. เริ่มแรกให้เราไป Download Oracle XML Publisher 5.6.2 นี้มาก่อนครับ

    2. ขั้นตอนถัดมาให้เรานำ Library มาใช้ โดย Library จะอยู่ใน <zip_dir>/manual/lib

    3. จากนั้นให้เราสร้าง xml ขึ้นมาเพื่อไว้ใช้เป็น template ของ Datasource โดยในตัวอย่างนี้จะทำการดึงข้อมูลจาก Table Employee ใน HR Schema ซึ่งเป็น Sample Schema ใน Oracle Database มาแสดงโดยที่มี JOB_ID เป็น Parameter นะครับ


    4. <?xml version="1.0" encoding="WINDOWS-1252" ?>
      <dataTemplate name="employeeData" description="Employees Data"
      defaultPackage="" Version="1.0">
      <parameters>
      <parameter name="job" dataType="character"/>
      </parameters>
      <dataQuery>
      <sqlStatement name="Q1">
      <![CDATA[
      SELECT em.employee_id,
      em.first_name||' '||em.last_name ename,
      em.email,
      em.phone_number,
      em.salary,
      em.commission_pct
      FROM employees em
      WHERE em.Job_Id = :job
      ]]>
      </sqlStatement>
      </dataQuery>
      <dataSructure>
      <group name="G_EMP" source="Q1">
      <element name="ID" value="employee_id"/>
      <element name="NAME" value="ename"/>
      <element name="EMAIL" value="email"/>
      <element name="PHONE_NUMBER" value="phone_number"/>
      <element name="SALARY" value="salary"/>
      <element name="COMMISSTION" value="commission_pct"/>
      </group>
      </dataSructure>
      </dataTemplate>

    5. หลังจากที่เรามี Template สำหรับ Datasource แล้วก็มา นำมาใช้ใน Code Java ตามตัวอย่างได้เลยครับ


    6. package my.xml;

      import com.sun.java.util.collections.Hashtable;
      import java.sql.DriverManager;
      import java.sql.SQLException;
      import oracle.apps.xdo.XDOException;
      import oracle.apps.xdo.dataengine.DataProcessor;

      public class XMLSource {
      public static void main(String[] args) {
      try {
      // Create Connection And Connect To Database
      Class.forName("oracle.jdbc.OracleDriver");
      String url = "jdbc:oracle:thin:@192.168.2.19:1521:ORCL";
      java.sql.Connection jdbcConnection = DriverManager.getConnection(url,
      "HR", "HR");

      // New DataProcess and Set Template
      DataProcessor dataProcessor = new DataProcessor();
      dataProcessor.setDataTemplate("employeeDS.xml");

      // Create Parameter Hashtable and set to DataProcess
      Hashtable parameters = new Hashtable();
      parameters.put("job", "IT_PROG");
      dataProcessor.setParameters(parameters);

      // Set Connection to DataProcess
      dataProcessor.setConnection(jdbcConnection);

      // Generate Datasource to XML File
      dataProcessor.setOutput("employeeData.xml");
      // Process
      dataProcessor.processData();
      } catch (SQLException e) {
      System.out.println("SQLException " + e.getMessage());
      } catch (ClassNotFoundException e) {
      System.out.println("ClassNotFoundException " + e.getMessage());
      } catch (XDOException e) {
      System.out.println("XDOException" + e.getMessage());
      }
      }
      }

    เมื่อ Code เสร็จแล้วให้เราลอง Run Code Java ดูเราจะได้ ไฟล์ XML ชื่อ employeeData.xml มาครับ



    ท่านสามารถอ่านบทความนี้ผ่านทาง Oracle-Java อีกทางนึงครับ

    Tuesday, October 9, 2007

    Oracle-Java


    ไม่กี่วันก่อนมีเมลล์ส่งมาที่เรา โดยคุณ kim โดยเป็นเมลล์ที่ Invite ใหเรา้เข้าไปร่วมกับ Oracle-Java Blog ที่เขียนเกี่ยวกับ Oracle และ Java ตามชื่อนั่นแหละครับ นอกจากนั้นยังมีข่าวสารใหม่ๆในโลกสารสนเทศมาอับเดดอีกต่างหาก



    ในทีแรก ไม่คิดอะไร เพราะเราเพิ่งจะเริ่มเขียน Blog ด้วยเหตุผลที่ต้องการ ฝึกฝนตัวเองในการเรียบเรียงคำพูดหรือความคิดเพื่อที่จะได้นำมาถ่ายถอดได้ ก็เริ่มต้นด้วยการ Post บทความเกี่ยวกับตัวเราเองลงไปก่อน หลังจากนั้นก็มีความคิดว่าจะ Post บทความที่เป็นความรู้ทาง Technology ที่เราได้เจอหรือพบมาลงไปด้วย เพื่อจะเป็นประโยชน์ให้กับประเทศไทยได้บ้าง เพราะเรา Post ลงไปเป็นภาษาไทย (โคดรักชาติ) หลังจาก Post บทความไปได้ 2 บทความ อันหนึ่งตั้งใจเขียนส่วนอีกอัน แหะๆ Post ไปเพราะว่าเราต้องการให้มันสม่ำเสมอ คิดว่าไ่ม่ค่อยมีประโยชน์อะไรมากนัก ไม่คิดเลยว่าจากการกระทำของเรานั้นจะนำพาให้เราได้เข้าไปเป็นคนที่สามารถ Post บทความใน Blog ที่เราเข้าไปหาข้อมูลบ่อยๆได้ ไม่น่าเชื่อ ไม่คิดมาก่อน ว่าเขาจะอนุญาติให้เราเข้าไประบายในที่ๆนั้นได้ ไม่รู้ว่าเวลาเขาจะให้ออกจะมี Invite มาไหมเนอะ 555 (ดีใจที่ได้เข้าไปร่วม Join ครับ)

    Saturday, September 22, 2007

    รูปที่ ช่องใส่ addess



    พอดีสงสัยว่าเวลาเราพิมพ์ URL ใส่ช่อง Address แล้วทำไมบางเวบถึงมีรูปบางเวบถึงไม่มีรูป เลยลอง View Source ดูถึงได้เห็นว่า เขาใช้ตามนี้ครับ


    < link rel="shortcut icon" href="pics/shotcut.ico" />


    Saturday, September 15, 2007

    การกำหนดสิทธ์ในการเข้า Page บน Oacle Portal


    อยากเริ่มต้นเขียนบทความที่คิดว่ามีประโยชน์นานแล้ววันนี้ได้ลองสักที ไม่รู้ว่าจะรู้เรื่องกันไหมนะครับ พอดีได้รับงานให้มาดูเรื่องการ Set Priviledge ให้กับ Tab Page ที่เราสร้างให้ไว้ใน Oracle Portal เพื่อว่ามันจะเป็นประโยชน์บ้าง




    โดยที่เริ่มต้นเราจะต้องสร้าง User และ Group ขึ้นใน OID ก่อนเพื่อที่จะไว้ใช้ทดลองเวลาที่เราสร้าง Page ใน Portal เสร็จแล้ว โดยเราได้สร้าง User และ Group ตามนี้
    1. สร้าง User ขึ้นมา 2 User เพื่อไว้ใช้ในการทดสอบ โดยเราได้สร้างไว้เป็น manager1 และ sale1
    2. สร้าง Group มาเป็น 3 Group ดังนี้คือ Admin , Manager และ Sale
    3. กำหนดสมาชิกของ Group ที่สร้างขึ้นมาดังนี้

  • ให้ User manager1 เป็นสมาชิกของ Group Manager
  • ให้ User sale1 เป็นสมาชิกของ Group Sale
  • ให้ Group Manager และ Sale เป็นสมาชิกของ Group Admin



    หลังจากที่เรามี User เพื่อไว้ใช้ในการ ทดสอบแล้ว ก็มาสร้าง Page ใน Oracle Portal ได้
    1. เมื่อเรา Log In เข้ามาให้เรา สร้าง Page Group ขึ้นมา
    2. สร้าง Page ขึ้นมาไว้ใน Page Group ที่เราสร้างไว้ก่อนหน้า
    3. กดเข้าไป Edit ที่ Page ที่เราสร้างขึ้นมา แล้วสร้าง Tab ขึ้นมา 3 Tab โดยตั้งชื่อ Tab ดังนี้

  • Admin
  • Manager
  • Sale

    4. เข้าไปที่ Edit Tab แล้วเข้าไปกำหนด สิทธในการ เข้าถึง โดย Grant สิทธิให้ดังนี้
  • ที่ Admin Tab ให้เรากำหนด Group Admin มีสิทธิในการ View
  • ที่ Manager Tab ให้เรากำหนด Group Manager มีสิทธิในการ View
  • ที่ Sale Tab ให้เรากำหนด Group Sale มีสทธิในการ View


    เมื่อกำหนดสิทธิให้กับ Tab แล้วเวลาที่เรา Login ด้วย User manager1 เราก็จะไม่เห็น Tab Sale เวลาที่เรา Login ด้วย User sale1 เราก็จะไม่เห็น Tab Manager

  • Tuesday, September 11, 2007

    เหตุเกิดบนรถเมล์ (สาย 122 )



    ในวันที่ 11 เดือนกันยายน ปี 2007 วันที่อากาศร้อนอบอ่าว เป็นอากาศก่อนฝนจะตก ณ.เวลาประมาณ 19.30 น รถไฟใต้ดินจากหัวลำโพงไปบางซื่อได้มาจอดที่สถานีลาดพร้าว เราขึ้นมาจากรถไฟใต้ดินเพื่อต่อรถเมล์กลับบ้าน โดยปกติเราจะต้องเดินข้ามข้ามแยกรัชดาไปก่อน เพื่อไปขึ้นรถเมล์ที่สามารถมาจากทางรัชดาหรือว่าทางหน้าศาลได้ด้วย ที่ทำเช่นนี้เพราะมีความเชื่อว่ารถที่มาจากอีกสองทางจะมีความหนาแน่นของเพื่อนผู้เดินทางไปบนรถเมล์ร่วมกันกับเราน้อยกว่าที่มาจากทางลาดพร้าวทางเดียว ถึงแม้มันจะเป็นจริงบ้างไม่เป็นจริงบ้างก็ตาม


    ในวันนั้น หลังจากที่ขึ้นมาจากสถานีรถไฟใต้ดินข้าพเจ้าสังเกตเห็นรถเมล์คันสีแดง สาย 122 จอดตระหง่านอยู่ โดยที่ผู้โดยสารที่อยู่ในรถนั้นยังไม่แน่นขนัดไปด้วยผู้คน เราจึงตัดสินใจที่จะขึ้นรถขันนั้นเลยโดยไม่เดินข้ามแยกไป เมื่อขึ้นไปบนรถ เราสังเกตเห็นคนที่ยืนอยู่บนรถนั้นยืนกันเพียงฝั่งเดียวคือฝั่งที่นั่งคู่ ส่วนอีกด้านที่เป็นฝั่งเดียวกับผู้นั่งเดี่ยวกลับไม่มีใครมายืนเลยสักคนเดียว โดยที่ทางฝั่งผู้นั่งเดี่ยวนั้นจะมีนักกีฬานิโกรนั่งอยู่ เราไม่ได้คิดอะไร จึงเลือกไปยืนทางฝั่งเดียวกับที่นิโกรนั่งกันอยู่



    ช่วงเวลาที่รอไฟเขียวอยู่นั้นก็มีคนขึ้นมาเรื่อยแล้วก็มายืนทางฝั่งเดียวกันกับเรามากขึ้น ทำให้เรารู้สึกอึดอัดไป เมื่อสัญญาณไฟเขียวปรากฏขึ้นรถก็เคลื่อนตัวอย่างช้าๆ ไปข้างหน้า เมื่อพ้นแยกไปได้สักระยะโชเฟอร์รถเมล์ปหักออกมาทางเลนขวาเพื่อที่จะเคลื่อนตัวให้ได้เร็วขึ้น เมื่อรถเร็วขึ้นลมก็แรงขึ้นด้วย ลมกระแทกหน้าแรงมากกกกก ลมที่โกรกเข้ามามันน่าจะเป็นสัญญาณที่ดีในรถที่มีคนแออัดอยู่เพราะจะทำให้คลายความรู้สึกแออัดไปได้บ้าง แต่ว่าสัมผัสที่ลมพัดมานั้นกลับเป็นการเพิ่มความอึดอัดใจให้กับเรา กลิ่นเต่า



    โว้ววววววววววว ความอึดอัดกลับกลายเป็นความโคดอึดอัดเพราะหายใจไม่ค่อยสะดวก ต้องมากลั้นลมหายใจไม่ให้ดมกลิ่นเต่าของนิโกรอีก ยังโชคดีที่เมื่อถึงป้ายรถเมล์มีคนลงทำให้เราย้ายฝั่งยืนได้(คิดถึงกริยาคนรีบย้ายตามไปด้วย)ค่อยยังชั่ว แต่ก็ยังมีผู้โดยสารบางคนยืนตั้งแต่เราขึ้นรถจนเราลงจากรถแล้วเขาก็ยังยืนอยู่ฝั่งเดียวกับนิโกรอยู่อีก เราได้แต่หวังว่าเขาคงจะไม่เป็นอะไรเมื่อถึงที่หมาย 5555

    Monday, April 9, 2007

    Koh Tao (เกาะเต่า)

    เริ่มต้นเดินทางโดยไปที่ข้าวสารขึ้นรถทัวร์ของท่าเรือไป


    เวลาเมื่อเริ่มออกเดินทางเราออกเดินทางจากตรกข้าวสารกันประมาณ 3 ทุ่มครึ่ง ใช้เวลาเดินทางมากกว่า 5 ชม. แล้วก็ถึงท่าเรือลมพระยา

    ภาพที่ถ่ายจากท้ายเรือในบริเวณที่นั่งอยู่ แรงสั่นสะเทือนของเครื่องยนต์เรือทำให้ไม่สามารถที่คมชัดได้


    ภาพของผู้เดินทางมาคนหนึ่งที่ทำการสร้างสมดุลให้กับร่างกายโดยการปล่อยน้ำย่อยในกระเพาะออกมาเก็บไว้ในพาชนะที่เรียกว่าถุงพลาสติก หลังจากเดินทางบนเรือ




    เรือลมพระยาที่บรรทุกพวกเรามา


    ที่พัก ที่ใช้พำนักเป็นเวลาสองคืนเป็นรีสอร์ทชื่อว่า Black Tip Dive Resort


    จากการเดินทางอันยาวนานเราหยุดเดินทางต่อพักหนึ่ง กินข้าว แล้วจึงตกลงกันว่า จะไปเกาะนางยวนกัน


    พาหนะที่เราใช้ในการเดินทางไปที่เกาะนางยวนกัน
    กับตันเรือ
    หินแห่งจินตนาการ(ตั้งเอง) ตั้งตะหง่านชูชันต้อนรับให้เราได้ขบคิดทันทีเมื่อไปถึงที่ท่าเรือ (เหมือนอะไรก็จินตนาการเอาเอง ของใครของมัน)


    ภาพของเกาะนางยวนเมื่อปี 2528 (เชื่อมะ)

    ชาวบ้านที่อาศัยอยู่บนเกาะแห่งนี้


    นักท่องเที่ยวชาวต่างชาติ ที่บังเอิญหลุดเข้ามาในกล้อง จริง จริงงงง




    ก้อนหินและทะเลแหวก มุมจากด้านล่าง




    เศษปะการังถูกเอามาเรียงต่อกันเพื่อจารึก




    เอากะเขาบ้าง หวังว่าคงไม่โดนจับ




    รูปถ่ายจากวิวด้านบนของจุดชมวิวทำให้เราสัมผัสได้ถึงความใสของน้ำทะเล




    ภาพของเกาะนางยวนจากจุดชมวิวที่สูงที่สุดของเกาะนี้




    หลังจากที่ได้สัมผัสกับเกาะนางยวนแล้วเราก็นั่งเรือลำเดิมกลับกัน




    ภาพพระอาทิตย์ตก ไม่เข้าใจเหมือนกันว่าทำไมต้องถ่ายมันทุกที



    น่าเสียดายที่กล้องไม่สามารถต้านทานแรงดันของน้ำได้ไม่งั้นก็คงจะได้เอาภาพของวันที่สองที่ได้ไปดำน้ำมาให้ดู ภาพสุดท้ายเป็นภาพท่าเรือที่เราขึ้นมากัน