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 ครับ)