Business Object Designer¿¡¼­ i2ADWODA »ç¿ë

ÀÌ ¼½¼Ç¿¡¼­´Â Business Object Designer¿¡¼­ i2ADWODA¸¦ »ç¿ëÇÏ¿© Business Object Á¤ÀǸ¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. Business Object Designer ½ÃÀÛ¿¡ ´ëÇÑ Á¤º¸´Â Business Object Development Guide¸¦ ÂüÁ¶ÇϽʽÿÀ.

ODA¸¦ ½ÇÇàÇÑ ÈÄ Business Object Designer¸¦ ½ÇÇàÇÏ¿© ±¸¼º ¹× ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. ODA¸¦ »ç¿ëÇÏ¿© Business Object Designer·Î Business Object Á¤ÀǸ¦ »ý¼ºÇÏ´Â ÀÛ¾÷Àº 6´Ü°è·Î ±¸¼ºµË´Ï´Ù. Business Object Designer¿¡¼­´Â °¢ ´Ü°è¸¦ ¾È³»ÇÏ´Â ¸¶¹ý»ç¸¦ Á¦°øÇÕ´Ï´Ù.

ODA¸¦ ½ÃÀÛÇÑ ÈÄ ´ÙÀ½À» ¼öÇàÇÏ¿© ¸¶¹ý»ç¸¦ ½ÃÀÛÇϽʽÿÀ.

  1. Business Object Designer¸¦ ¿©½Ê½Ã¿À.
  2. ÆÄÀÏ ¸Þ´º¿¡¼­ ODA¸¦ »ç¿ëÇÏ¿© »õ·Î ÀÛ¼º... ¼­ºê¸Þ´º¸¦ ¼±ÅÃÇϽʽÿÀ.

    Business Object Designer´Â ¸¶¹ý»ç¿¡¼­ ¿¡ÀÌÀüÆ® ¼±ÅÃÀ̶ó´Â ù ¹øÂ° âÀ» Ç¥½ÃÇÕ´Ï´Ù. ±×¸² 6Àº ÀÌ Ã¢¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

ODA¸¦ ¼±ÅÃ, ±¸¼º ¹× ½ÇÇàÇÏ·Á¸é ´ÙÀ½ ´Ü°è¸¦ ¼öÇàÇϽʽÿÀ.

  1. ODA ¼±ÅÃ
  2. "ÃʱâÈ­ µî·Ï Á¤º¸ ±¸¼º"
  3. "³ëµå ÆîÄ¡±â¿Í Å×À̺í, º¸±â ¹× ÀúÀå ÇÁ·Î½ÃÀú ¼±ÅÃ"
  4. "µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ® ¼±ÅûçÇ× È®ÀÎ"
  5. "Á¤ÀÇ »ý¼º" ¹× ¼±ÅÃÀûÀ¸·Î "Ãß°¡ Á¤º¸ Á¦°ø"
  6. "Á¤ÀÇ ÀúÀå"

ODA ¼±ÅÃ

±×¸² 6Àº Business Object Designer 6´Ü°è ¸¶¹ý»çÀÇ Ã¹ ¹øÂ° ´ëÈ­ »óÀÚ¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ÀÌ Ã¢¿¡¼­ ½ÇÇàÇÒ ODA¸¦ ¼±ÅÃÇϽʽÿÀ.

±×¸² 6. ODA ¼±ÅÃ


ODA¸¦ ¼±ÅÃÇÏ·Á¸é ´ÙÀ½À» ¼öÇàÇϽʽÿÀ.

  1. ¿¡ÀÌÀüÆ® ã±â ´ÜÃ߸¦ ´­·¯ ¿¡ÀÌÀüÆ® Çʵ忡 ¸ðµç µî·Ï ODA ¶Ç´Â ÇöÀç ½ÇÇà ÁßÀÎ ODA¸¦ Ç¥½ÃÇϽʽÿÀ.
    ÁÖ:
    Business Object Designer°¡ ¿øÇÏ´Â ODA¸¦ ãÁö ¸øÇÏ´Â °æ¿ì, ODA ¼³Á¤À» È®ÀÎÇϽʽÿÀ.
  2. Ç¥½ÃµÈ ¸ñ·Ï¿¡¼­ ¿øÇÏ´Â ODA¸¦ ¼±ÅÃÇϽʽÿÀ.

    Business Object Designer°¡ ¿¡ÀÌÀüÆ® À̸§ Çʵ忡 ¼±ÅûçÇ×À» Ç¥½ÃÇÕ´Ï´Ù.

ÃʱâÈ­ µî·Ï Á¤º¸ ±¸¼º

óÀ½À¸·Î Business Object Designer°¡ i2ADWODA¿Í Åë½ÅÇÏ°Ô µÇ¸é ±×¸² 7¿¡ Ç¥½ÃµÇ¾î ÀÖ´Â ´ë·Î ÃʱâÈ­ µî·Ï Á¤º¸ ¼¼Æ®¸¦ ÀÔ·ÂÇϵµ·Ï ÇÁ·ÒÇÁÆ®ÇÕ´Ï´Ù. ÀÌ µî·Ï Á¤º¸¸¦ À̸§À» ÁöÁ¤ÇÑ ÇÁ·ÎÆÄÀÏ¿¡ ÀúÀåÇÏ¿© i2ADWODA¸¦ ÀÌ¿ëÇÒ ¶§¸¶´Ù ´Ù½Ã ÀÔ·ÂÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ODA ÇÁ·ÎÆÄÀÏ ÁöÁ¤¿¡ ´ëÇÑ Á¤º¸´Â Business Object Development Guide¸¦ ÂüÁ¶ÇϽʽÿÀ.

±×¸² 7. ¿¡ÀÌÀüÆ® ÃʱâÈ­ µî·Ï Á¤º¸ ±¸¼º


Ç¥ 14¿¡ ¼³¸íµÇ¾î ÀÖ´Â ´ë·Î i2ADWODA µî·Ï Á¤º¸¸¦ ±¸¼ºÇϽʽÿÀ.


Ç¥ 14. i2ADWODA µî·Ï Á¤º¸
Çà ¹øÈ£ µî·Ï Á¤º¸ À̸§ µî·Ï Á¤º¸ À¯Çü ¼³¸í
1
UserName
 
¹®ÀÚ¿­ µ¥ÀÌÅͺ£À̽º ¿¬°á ±ÇÇÑÀ» °®°í ÀÖ´Â »ç¿ëÀÚ À̸§
2
Password
 
¹®ÀÚ¿­ µ¥ÀÌÅͺ£À̽º ¿¬°á ±ÇÇÑÀ» °®°í ÀÖ´Â »ç¿ëÀÚ ¾ÏÈ£
3
DatabaseUrl
 
¹®ÀÚ¿­ µ¥ÀÌÅͺ£À̽º ¿¬°áÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â URL.

¿¹: jdbc:oracle:thin:@MACHINENAME:1521:SIDNAME

4
DatabaseDriver
 
¹®ÀÚ¿­ ¿¬°á ¼³Á¤¿¡ »ç¿ëµÇ´Â µå¶óÀ̹ö À̸§. ¿¹: oracle.jdbc.driver.OracleDriver
5
DefaultBOPrefix
 
¹®ÀÚ¿­ Business Object À̸§À» °íÀ¯ÇÏ°Ô ¸¸µé±â À§ÇØ Ãß°¡µÇ´Â ÅØ½ºÆ®. ÀÌ µî·Ï Á¤º¸´Â ÇÊ¿äÇÑ °æ¿ì, Business Object Designer°¡ »ç¿ëÀÚ¿¡°Ô Business Object µî·Ï Á¤º¸¸¦ ÇÁ·ÒÇÁÆ®ÇÑ ÀÌÈÄ¿¡ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â "Ãß°¡ Á¤º¸ Á¦°ø"À» ÂüÁ¶ÇϽʽÿÀ.
6
TraceFileName
 
¹®ÀÚ¿­ i2ADWODA°¡ ÃßÀû Á¤º¸¸¦ ±â·ÏÇÏ´Â ÆÄÀÏ. ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, i2ADWODA°¡ \ODA\i2ADW µð·ºÅ丮¿¡ ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â °æ¿ì, i2ADWODA°¡ ÆÄÀÏ¿¡ Ãß°¡µË´Ï´Ù. i2ADWODA´Â À̸§ ÁöÁ¤ ±ÔÄ¢¿¡ µû¶ó ÆÄÀÏ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¿¡ÀÌÀüÆ® À̸§ÀÌ i2ADWODAÀÎ °æ¿ì, i2ADWODAAtrace.txt ÃßÀû ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù. ÀÌ µî·Ï Á¤º¸¸¦ »ç¿ëÇÏ¿© ÀÌ ÆÄÀÏÀÇ ´Ù¸¥ À̸§À» ÁöÁ¤ÇϽʽÿÀ.
7
TraceLevel
 
Á¤¼ö i2ADWODA¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ÃßÀû ·¹º§
8
MessageFile
 
¹®ÀÚ¿­

¿À·ù ¹× ¸Þ½ÃÁö ÆÄÀÏ À̸§

i2ADWODA´Â À̸§ ÁöÁ¤ ±ÔÄ¢¿¡ µû¶ó ÆÄÀÏ À̸§À» Ç¥½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¿¡ÀÌÀüÆ® À̸§ÀÌ i2ADWODAÀÎ °æ¿ì, ¸Þ½ÃÁö ÆÄÀÏ µî·Ï Á¤º¸ °ªÀº i2ADWODAAtrace.txt·Î Ç¥½ÃµË´Ï´Ù.

Áß¿ä:
¿À·ù ¹× ¸Þ½ÃÁö ÆÄÀÏÀº \ODA\messages µð·ºÅ丮¿¡ À§Ä¡ÇØ¾ß ÇÕ´Ï´Ù.

ÀÌ µî·Ï Á¤º¸¸¦ »ç¿ëÇÏ¿© ±âÁ¸ ÆÄÀÏÀ» °ËÁõ ¶Ç´Â ÁöÁ¤ÇϽʽÿÀ.

Áß¿ä:
Business Object Designer¿¡ Ç¥½ÃµÇ´Â ±âº»°ªÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» Ç¥½ÃÇÏ´Â °æ¿ì, ¸Þ½ÃÁö ÆÄÀÏ À̸§À» Á¤Á¤ÇϽʽÿÀ. ÀÌ ´ëÈ­ »óÀÚ¿¡¼­ ´ÙÀ½À¸·Î À̵¿ÇÒ ¶§ À̸§ÀÌ ¿Ã¹Ù¸£Áö ¾ÊÀ¸¸é Business Object Designer°¡ ODA¸¦ ¼³Ä¡ÇÑ Ã¢¿¡ ¿À·ù ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ¸Þ½ÃÁö´Â Business Object Designer¿¡¼­ ÆË¾÷µÇÁö ¾Ê½À´Ï´Ù. ¿Ã¹Ù¸¥ ¸Þ½ÃÁö ÆÄÀÏ ÁöÁ¤¿¡ ½ÇÆÐÇϸé ODA°¡ ¸Þ½ÃÁö ¾øÀÌ ½ÇÇàÇÏ°Ô µË´Ï´Ù.

³ëµå ÆîÄ¡±â¿Í Å×À̺í, º¸±â ¹× ÀúÀå ÇÁ·Î½ÃÀú ¼±ÅÃ

i2ADWODAÀÇ ¸ðµç ÃʱâÈ­ µî·Ï Á¤º¸¸¦ ±¸¼ºÇÏ°í ³ª¸é Business Object Designer°¡ ÁöÁ¤µÈ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÇ¾î µ¥ÀÌÅͺ£À̽º ³» ¸ðµç ½ºÅ°¸¶ À̸§À» °®´Â Æ®¸®¸¦ Ç¥½ÃÇÕ´Ï´Ù. Æ®¸®¿¡¼­ ³ëµå·Î ³ªÅ¸³ª´Â ÀÌ À̸§Àº ÆîÄ¥ ¼ö ÀÖ½À´Ï´Ù. À̸§À» ´­·¯ °¢ ½ºÅ°¸¶ÀÇ ¸ðµç Å×À̺í, º¸±â ¹× ÀúÀå ÇÁ·Î½ÃÀú¸¦ Ç¥½ÃÇϽʽÿÀ. ±×¸² 8Àº ÀϺΠ½ºÅ°¸¶°¡ ÆîÃÄÁø ÀÌ ´ëÈ­ »óÀÚ¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

±×¸² 8. ³ëµå°¡ ÆîÃÄÁø ½ºÅ°¸¶ Æ®¸®


»ý¼ºµÈ Business Object Á¤ÀÇÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¸ðµç µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ®¸¦ ½Äº°ÇÏ·Á¸é ¸ðµç Çʼö Å×À̺í, º¸±â ¹× ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¼±ÅÃÇÑ ÈÄ ´ÙÀ½À» ´©¸£½Ê½Ã¿À. ¸®ÅÏµÈ ¿ÀºêÁ§Æ®¸¦ ÇÊÅ͸µÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ Á¤º¸´Â Business Object Development Guide¸¦ ÂüÁ¶ÇϽʽÿÀ.

µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ® ¼±ÅûçÇ× È®ÀÎ

»ý¼ºµÈ Business Object Á¤ÀÇ¿Í ¿¬°üµÉ ¸ðµç µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ®¸¦ ½Äº°ÇÏ°í ³ª¸é Business Object Designer°¡ ¼±ÅÃµÈ Å×ÀÌºí ¹× º¸±â¸¸ ÀÖ´Â ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù. ±×¸² 9´Â ÀÌ ´ëÈ­ »óÀÚ¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

±×¸² 9. µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ® ¼±ÅûçÇ× È®ÀÎ


ÀÌ Ã¢¿¡¼­´Â ´ÙÀ½ ¿É¼ÇÀ» Á¦°øÇÕ´Ï´Ù.

Á¤ÀÇ »ý¼º

µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ®¸¦ È®ÀÎÇÏ°í ³ª¸é ´ÙÀ½ ´ëÈ­ »óÀÚ°¡ Business Object Designer°¡ Á¤ÀǸ¦ »ý¼ºÇϰí ÀÖÀ½À» ¾Ë·ÁÁÝ´Ï´Ù.

Ãß°¡ Á¤º¸ Á¦°ø

i2ADWODA¿¡ Ãß°¡ Á¤º¸°¡ ÇÊ¿äÇÑ °æ¿ì, Business Object Designer°¡ »ç¿ëÀÚ¿¡°Ô Á¤º¸¸¦ ÇÁ·ÒÇÁÆ®ÇÏ´Â BO µî·Ï Á¤º¸ âÀ» Ç¥½ÃÇÕ´Ï´Ù.

BO µî·Ï Á¤º¸ â¿¡¼­ ´ÙÀ½ Á¤º¸¸¦ ÀÔ·Â ¶Ç´Â º¯°æÇϽʽÿÀ.

ÁÖ:
BO µî·Ï Á¤º¸ ´ëÈ­ »óÀÚÀÇ Çʵ忡 ¿©·¯ °ªÀÌ ÀÖ´Â °æ¿ì, ´ëÈ­ »óÀÚ°¡ óÀ½ Ç¥½ÃµÉ ¶§ Çʵå´Â ºñ¾î ÀÖ´Â °ÍÀ¸·Î ³ªÅ¸³³´Ï´Ù. ÇÊµå ¾ÈÀ» ´­·¯ ÇØ´ç °ªÀÇ µå·Ó ´Ù¿î ¸ñ·ÏÀ» Ç¥½ÃÇϽʽÿÀ.

±×¸² 10. ÀúÀå ÇÁ·Î½ÃÀú¿Í ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼º ¿¬°ü


Business Object¿¡ Ãß°¡µÉ ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼ºÀ» ÇØ´ç ½ºÅ°¸¶ÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¼Ó¼º°ú ¿¬°üÁöÀ» ¼ö ÀÖ½À´Ï´Ù. °¢ ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼º¿¡ ´ëÇØ ÇØ´ç ½ºÅ°¸¶ÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â ¸ðµç ÀúÀå ÇÁ·Î½ÃÀúÀÇ µå·Ó ´Ù¿î ¸ñ·Ï¿¡¼­ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸´Â ÇØ´ç ¼Ó¼º¿¡ ´ëÇØ ÇÊ¿äÇÑ ASI Á¤º¸¸¦ »ý¼ºÇÕ´Ï´Ù.

¿ÀºêÁ§Æ® ·¹º§ÀÇ ÀÀ¿ëÇÁ·Î±×·¥ ƯÁ¤ Á¤º¸(ASI)´Â TN=tableName ÇüÅÂÀÔ´Ï´Ù.

±×¸®°í ¼Ó¼º ·¹º§ÀÇ °æ¿ì, ASI´Â CN=ColumnName ÇüÅÂÀÔ´Ï´Ù.

Business Object°¡ ÀúÀå ÇÁ·Î½ÃÀú·ÎºÎÅÍ »ý¼º ÁßÀ̰í, SPForCreate¿Í °°Àº i2 Active Data Warehouse Adapter ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼ºÀÌ ÇØ´ç Business Object¿Í ¿¬°üÀÌ ÀÖÀ¸¸é, ODA´Â ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼º¿¡ ´ëÇØ ÇØ´ç ½ºÅ°¸¶ÀÇ ¸ðµç ÀúÀå ÇÁ·Î½ÃÀú À̸§ ¸ñ·ÏÀ» Á¦°øÇϰí ÇÊ¿äÇÑ ÀúÀå ÇÁ·Î½ÃÀú¿Í Business Object¸¦ ¿¬°ü½Ãų ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ´Â ´ÙÀ½°ú °°Àº i2 ADW Adapter ÀúÀå ÇÁ·Î½ÃÀú ¼Ó¼º¿¡ ´ëÇØ ASI¸¦ »ý¼ºÇÕ´Ï´Ù.

SPN=stored procedure Name; IN=a1:a2; OUT=b1:b2; IO=c1:c2

¿©±â¼­, INÀº ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¸Å°³º¯¼ö°¡ INPUT À¯ÇüÀÓÀ» ÀǹÌÇϰí, OUTÀº ¸Å°³º¯¼ö°¡ OUTPUT À¯ÇüÀÓÀ» ÀǹÌÇϸç, IO´Â INPUT/OUTPUT À¯ÇüÀÓÀ» ÀǹÌÇÕ´Ï´Ù. ODA´Â ASI¿¡ ´ëÇØ RS¸¦ TRUE ¶Ç´Â FALSE·Î ¼³Á¤ÇÏÁö ¾ÊÀ¸¹Ç·Î À̸¦ Á÷Á¢ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.

Business Object¿¡ Ãß°¡µÈ Verb´Â Ç¥ÁØ VerbÀε¥, ƯÈ÷ Retrieve, RetrieveByContent, Create, Update ¹× DeleteÀÔ´Ï´Ù.

ÀúÀå ÇÁ·Î½ÃÀúÀÇ ¸®ÅÏ ¸Å°³º¯¼ö°¡ ResultSet À¯ÇüÀ̸é ODA´Â °á°ú ¼¼Æ®¸¦ ºÐ¼®ÇÏ¿© Business Object¸¦ ÀÛ¼ºÇϰí, Business ObjectÀÇ °á°ú ¼¼Æ® ¼Ó¼º Ä÷³À» ÀÛ¼ºÇÕ´Ï´Ù. ÀúÀå ÇÁ·Î½ÃÀú Ä÷³ÀÇ ASI´Â CN=StoredProcedureColumnNameÀ¸·Î ¼³Á¤µË´Ï´Ù. ODA´Â µå¶óÀ̹ö°¡ ¸®ÅÏÇÏ´Â JDBC ¸ÞŸ µ¥ÀÌÅÍ Á¤º¸¿¡ ±â¹ÝÇÏ¿© Ű ¼Ó¼ºÀ» ¼³Á¤ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ¸®ÅϵÇÁö ¾ÊÀ¸¸é, ODA´Â ±âº»°ªÀ¸·Î ¾Æ¹«·± ¼Ó¼ºµµ Ű·Î Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. ±æÀÌ ¹× À¯Çü°ú °°Àº ´Ù¸¥ ¸ðµç ¼Ó¼ºÀº Å×À̺í·ÎºÎÅÍ »ý¼ºµÈ ¼Ó¼ºÀ¸·Î ¼³Á¤µË´Ï´Ù.

Á¤ÀÇ ÀúÀå

BO µî·Ï Á¤º¸ ´ëÈ­ »óÀÚ¿¡ ¸ðµç Çʼö Á¤º¸¸¦ ÀÔ·ÂÇϰí È®ÀÎÀ» ´©¸£°í ³ª¸é Business Object Designer°¡ ¸¶¹ý»ç¿¡ ¸¶Áö¸· ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¿©±â¼­ Á¤ÀǸ¦ ¼­¹ö ¶Ç´Â ÆÄÀÏ¿¡ ÀúÀåÇϰųª Business Object Designer¿¡¼­ ÆíÁýÇϱâ À§ÇØ Á¤ÀǸ¦ ¿­ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸ ¹× Ãß°¡ ¼öÁ¤»çÇ×Àº Business Object Development Guide¸¦ ÂüÁ¶ÇϽʽÿÀ.

Copyright IBM Corp. 1997, 2004