El uso de los formatos JSON para enviar datos entre sistemas y su utilización en implementaciones de JScript nos ha obligado a acostumbrarnos a usar las fechas en formato de 13 caracteres (p.e. 1442966675000). Sin embargo me fue muy difícil encontrar la manera de generarlo desde el mismo oracle.
Navegando encontré que se puede reproducir este formato desde una consulta sql en oracle de la siguiente manera:
select (sysdate - to_date('1970-01-01', 'yyyy-mm-dd'))/( 1 / 24 / 60 / 60 / 1000) from dual;
Así también se puede obtener la fecha a partir de este formato de 13 caracteres:
select date '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * 1442966675000 from dual;
Espero que les sirva, me basé en este post
martes, 22 de septiembre de 2015
Convertir Fecha Oracle a formato JSON de 13 caracteres
miércoles, 1 de julio de 2015
Iconos Unicode para correo
Hace unos días me llegó un correo de publicidad que incluía en su asunto unos iconos muy llamativos que captaron mi atención y me puse a investigar sobre el asunto.
Leí por ahí que los expertos en marketing directo indican que los correos con estos iconos en el asunto tienen el 50% más probabilidad de abrirse que los correos que no tienen iconitos.
Inicié la búsqueda de un listado oficial de estos iconos pero encontré mucha información que faltaba actualizar, hasta que dí con esta lista en PDF de Unicode.org
http://www.unicode.org/charts/PDF/U1F300.pdf
Quise hacer una prueba y lamentablemente al copiar y pegar desde el pdf algunos de estos iconos en el asunto de un correo nuevo de gmail algunos eran reconocidos y otros no. Por lo que opté por publicar la lista en este artículo pero me dí con la sorpresa que al publicar el artículo no se reconocen los íconos, pero en modo edición de mi artículo sí los veo casi todos. En modo edición de mi artículo copié y pegué nuevamente en el asunto de mi correo y funcionó, pude usarlos y obtuve este hermoso resultado que se ve en la imagen principal de este artículo.
Los clientes de correo grandes como Yahoo, Gmail, Apple mail, ya agregan colores a estos iconos con lo que se hace más vistoso nuestro correo en una bandeja de entrada.
Espero que haberlos ayudado en algo, saludos
PD: Igualmente adjunto la lista de iconos que aunque no se reconocen me servirá para mi uso personal :)
🌀 🌁 🌂 🌃 🌄 🌅 🌆 🌇 🌈 🌉 🌊 🌋 🌌 🌍 🌎 🌏 🌐 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 🌙 🌚 🌛 🌜 🌝 🌞 🌟 🌠 🌡 🌢 🌣 🌤 🌥 🌦 🌧 🌨 🌩 🌪 🌫 🌬 🌭 🌮 🌯 🌰 🌱 🌲 🌳 🌴 🌵 🌶 🌷 🌸 🌹 🌺 🌻 🌼 🌽 🌾 🌿 🍀 🍁 🍂 🍃 🍄 🍅 🍆 🍇 🍈 🍉 🍊 🍋 🍌 🍍 🍎 🍏 🍐 🍑 🍒 🍓 🍔 🍕 🍖 🍗 🍘 🍙 🍚 🍛 🍜 🍝 🍞 🍟 🍠 🍡 🍢 🍣 🍤 🍥 🍦 🍧 🍨 🍩 🍪 🍫 🍬 🍭 🍮 🍯 🍰 🍱 🍲 🍳 🍴 🍵 🍶 🍷 🍸 🍹 🍺 🍻 🍼 🍽 🍾 🍿 🎀 🎁 🎂 🎃 🎄 🎅 🎆 🎇 🎈 🎉 🎊 🎋 🎌 🎍 🎎 🎏 🎐 🎑 🎒 🎓 🎔 🎕 🎖 🎗 🎘 🎙 🎚 🎛 🎜 🎝 🎞 🎟 🎠 🎡 🎢 🎣 🎤 🎥 🎦 🎧 🎨 🎩 🎪 🎫 🎬 🎭 🎮 🎯 🎰 🎱 🎲 🎳 🎴 🎵 🎶 🎷 🎸 🎹 🎺 🎻 🎼 🎽 🎾 🎿 🏀 🏁 🏂 🏃 🏄 🏅 🏆 🏇 🏈 🏉 🏊 🏋 🏌 🏍 🏎 🏏 🏐 🏑 🏒 🏓 🏔 🏕 🏖 🏗 🏘 🏙 🏚 🏛 🏜 🏝 🏞 🏟 🏠 🏡 🏢 🏣 🏤 🏥 🏦 🏧 🏨 🏩 🏪 🏫 🏬 🏭 🏮 🏯 🏰 🏱 🏲 🏳 🏴 🏵 🏶 🏷 🏸 🏹 🏺 1 2 3 4 5
🐀 🐁 🐂 🐃 🐄 🐅 🐆 🐇 🐈 🐉 🐊 🐋 🐌 🐍 🐎 🐏 🐐 🐑 🐒 🐓 🐔 🐕 🐖 🐗 🐘 🐙 🐚 🐛 🐜 🐝 🐞 🐟 🐠 🐡 🐢 🐣 🐤 🐥 🐦 🐧 🐨 🐩 🐪 🐫 🐬 🐭 🐮 🐯 🐰 🐱 🐲 🐳 🐴 🐵 🐶 🐷 🐸 🐹 🐺 🐻 🐼 🐽 🐾 🐿 👀 👁 👂 👃 👄 👅 👆 👇 👈 👉 👊 👋 👌 👍 👎 👏 👐 👑 👒 👓 👔 👕 👖 👗 👘 👙 👚 👛 👜 👝 👞 👟 👠 👡 👢 👣 👤 👥 👦 👧 👨 👩 👪 👫 👬 👭 👮 👯 👰 👱 👲 👳 👴 👵 👶 👷 👸 👹 👺 👻 👼 👽 👾 👿 💀 💁 💂 💃 💄 💅 💆 💇 💈 💉 💊 💋 💌 💍 💎 💏 💐 💑 💒 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟 💠 💡 💢 💣 💤 💥 💦 💧 💨 💩 💪 💫 💬 💭 💮 💯 💰 💱 💲 💳 💴 💵 💶 💷 💸 💹 💺 💻 💼 💽 💾 💿 📀 📁 📂 📃 📄 📅 📆 📇 📈 📉 📊 📋 📌 📍 📎 📏 📐 📑 📒 📓 📔 📕 📖 📗 📘 📙 📚 📛 📜 📝 📞 📟 📠 📡 📢 📣 📤 📥 📦 📧 📨 📩 📪 📫 📬 📭 📮 📯 📰 📱 📲 📳 📴 📵 📶 📷 📸 📹 📺 📻 📼 📽 📾 �
🔀 🔁 🔂 🔃 🔄 🔅 🔆 🔇 🔈 🔉 🔊 🔋 🔌 🔍 🔎 🔏 🔐 🔑 🔒 🔓 🔔 🔕 🔖 🔗 🔘 🔙 🔚 🔛 🔜 🔝 🔞 🔟 🔠 🔡 🔢 🔣 🔤 🔥 🔦 🔧 🔨 🔩 🔪 🔫 🔬 🔭 🔮 🔯 🔰 🔱 🔲 🔳 🔴 🔵 🔶 🔷 🔸 🔹 🔺 🔻 🔼 🔽 🔾 🔿 🕀 🕁 🕂 🕃 🕄 🕅 🕆 🕇 🕈 🕉 🕊 🕋 🕌 🕍 🕎 🕏 🕐 🕑 🕒 🕓 🕔 🕕 🕖 🕗 🕘 🕙 🕚 🕛 🕜 🕝 🕞 🕟 🕠 🕡 🕢 🕣 🕤 🕥 🕦 🕧 🕨 🕩 🕪 🕫 🕬 🕭 🕮 🕯 🕰 🕱 🕲 🕳 🕴 🕵 🕶 🕷 🕸 🕹 🕻 🕼 🕽 ℡ 🕿 🖀 🖁 🖂 🖃 🖄 🖅 🖆 🖇 🖈 🖉 🖊 🖋 🖌 🖍 🖎 🖏 🖐 🖑 🖒 🖓 🖔 🖕 🖖 🖗 🖘 🖙 🖚 🖛 🖜 🖝 🖞 🖟 🖠 🖡 🖢 🖣 🖥 🖦 🖧 🖨 🖩 🖪 🖫 🖬 🖭 🖮 🖯 🖰 🖱 🖲 🖳 🖴 🖵 🖶 🖷 🖸 🖹 🖺 🖻 🖼 🖽 🖾 🖿 🗀 🗁 🗂 🗃 🗄 🗅 🗆 🗇 🗈 🗉 🗊 🗋 🗌 🗍 🗎 🗏 🗐 🗑 🗒 🗓 🗔 🗕 🗖 🗗 🗘 🗙 🗚 🗛 🗜 🗝 🗞 🗟 🗠 🗡 🗢 🗣 🗤 🗥 🗦 🗧 🗨 🗩 🗪 🗫 🗬 🗭 🗮 🗯 🗰 🗱 🗲 🗳 🗴 🗵 🗶 🗷 🗸 🗹 🗺 🗻 🗼 🗽 🗾 �
Leí por ahí que los expertos en marketing directo indican que los correos con estos iconos en el asunto tienen el 50% más probabilidad de abrirse que los correos que no tienen iconitos.
Inicié la búsqueda de un listado oficial de estos iconos pero encontré mucha información que faltaba actualizar, hasta que dí con esta lista en PDF de Unicode.org
http://www.unicode.org/charts/PDF/U1F300.pdf
Quise hacer una prueba y lamentablemente al copiar y pegar desde el pdf algunos de estos iconos en el asunto de un correo nuevo de gmail algunos eran reconocidos y otros no. Por lo que opté por publicar la lista en este artículo pero me dí con la sorpresa que al publicar el artículo no se reconocen los íconos, pero en modo edición de mi artículo sí los veo casi todos. En modo edición de mi artículo copié y pegué nuevamente en el asunto de mi correo y funcionó, pude usarlos y obtuve este hermoso resultado que se ve en la imagen principal de este artículo.
Los clientes de correo grandes como Yahoo, Gmail, Apple mail, ya agregan colores a estos iconos con lo que se hace más vistoso nuestro correo en una bandeja de entrada.
Espero que haberlos ayudado en algo, saludos
PD: Igualmente adjunto la lista de iconos que aunque no se reconocen me servirá para mi uso personal :)
🌀 🌁 🌂 🌃 🌄 🌅 🌆 🌇 🌈 🌉 🌊 🌋 🌌 🌍 🌎 🌏 🌐 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 🌙 🌚 🌛 🌜 🌝 🌞 🌟 🌠 🌡 🌢 🌣 🌤 🌥 🌦 🌧 🌨 🌩 🌪 🌫 🌬 🌭 🌮 🌯 🌰 🌱 🌲 🌳 🌴 🌵 🌶 🌷 🌸 🌹 🌺 🌻 🌼 🌽 🌾 🌿 🍀 🍁 🍂 🍃 🍄 🍅 🍆 🍇 🍈 🍉 🍊 🍋 🍌 🍍 🍎 🍏 🍐 🍑 🍒 🍓 🍔 🍕 🍖 🍗 🍘 🍙 🍚 🍛 🍜 🍝 🍞 🍟 🍠 🍡 🍢 🍣 🍤 🍥 🍦 🍧 🍨 🍩 🍪 🍫 🍬 🍭 🍮 🍯 🍰 🍱 🍲 🍳 🍴 🍵 🍶 🍷 🍸 🍹 🍺 🍻 🍼 🍽 🍾 🍿 🎀 🎁 🎂 🎃 🎄 🎅 🎆 🎇 🎈 🎉 🎊 🎋 🎌 🎍 🎎 🎏 🎐 🎑 🎒 🎓 🎔 🎕 🎖 🎗 🎘 🎙 🎚 🎛 🎜 🎝 🎞 🎟 🎠 🎡 🎢 🎣 🎤 🎥 🎦 🎧 🎨 🎩 🎪 🎫 🎬 🎭 🎮 🎯 🎰 🎱 🎲 🎳 🎴 🎵 🎶 🎷 🎸 🎹 🎺 🎻 🎼 🎽 🎾 🎿 🏀 🏁 🏂 🏃 🏄 🏅 🏆 🏇 🏈 🏉 🏊 🏋 🏌 🏍 🏎 🏏 🏐 🏑 🏒 🏓 🏔 🏕 🏖 🏗 🏘 🏙 🏚 🏛 🏜 🏝 🏞 🏟 🏠 🏡 🏢 🏣 🏤 🏥 🏦 🏧 🏨 🏩 🏪 🏫 🏬 🏭 🏮 🏯 🏰 🏱 🏲 🏳 🏴 🏵 🏶 🏷 🏸 🏹 🏺 1 2 3 4 5
🐀 🐁 🐂 🐃 🐄 🐅 🐆 🐇 🐈 🐉 🐊 🐋 🐌 🐍 🐎 🐏 🐐 🐑 🐒 🐓 🐔 🐕 🐖 🐗 🐘 🐙 🐚 🐛 🐜 🐝 🐞 🐟 🐠 🐡 🐢 🐣 🐤 🐥 🐦 🐧 🐨 🐩 🐪 🐫 🐬 🐭 🐮 🐯 🐰 🐱 🐲 🐳 🐴 🐵 🐶 🐷 🐸 🐹 🐺 🐻 🐼 🐽 🐾 🐿 👀 👁 👂 👃 👄 👅 👆 👇 👈 👉 👊 👋 👌 👍 👎 👏 👐 👑 👒 👓 👔 👕 👖 👗 👘 👙 👚 👛 👜 👝 👞 👟 👠 👡 👢 👣 👤 👥 👦 👧 👨 👩 👪 👫 👬 👭 👮 👯 👰 👱 👲 👳 👴 👵 👶 👷 👸 👹 👺 👻 👼 👽 👾 👿 💀 💁 💂 💃 💄 💅 💆 💇 💈 💉 💊 💋 💌 💍 💎 💏 💐 💑 💒 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟 💠 💡 💢 💣 💤 💥 💦 💧 💨 💩 💪 💫 💬 💭 💮 💯 💰 💱 💲 💳 💴 💵 💶 💷 💸 💹 💺 💻 💼 💽 💾 💿 📀 📁 📂 📃 📄 📅 📆 📇 📈 📉 📊 📋 📌 📍 📎 📏 📐 📑 📒 📓 📔 📕 📖 📗 📘 📙 📚 📛 📜 📝 📞 📟 📠 📡 📢 📣 📤 📥 📦 📧 📨 📩 📪 📫 📬 📭 📮 📯 📰 📱 📲 📳 📴 📵 📶 📷 📸 📹 📺 📻 📼 📽 📾 �
🔀 🔁 🔂 🔃 🔄 🔅 🔆 🔇 🔈 🔉 🔊 🔋 🔌 🔍 🔎 🔏 🔐 🔑 🔒 🔓 🔔 🔕 🔖 🔗 🔘 🔙 🔚 🔛 🔜 🔝 🔞 🔟 🔠 🔡 🔢 🔣 🔤 🔥 🔦 🔧 🔨 🔩 🔪 🔫 🔬 🔭 🔮 🔯 🔰 🔱 🔲 🔳 🔴 🔵 🔶 🔷 🔸 🔹 🔺 🔻 🔼 🔽 🔾 🔿 🕀 🕁 🕂 🕃 🕄 🕅 🕆 🕇 🕈 🕉 🕊 🕋 🕌 🕍 🕎 🕏 🕐 🕑 🕒 🕓 🕔 🕕 🕖 🕗 🕘 🕙 🕚 🕛 🕜 🕝 🕞 🕟 🕠 🕡 🕢 🕣 🕤 🕥 🕦 🕧 🕨 🕩 🕪 🕫 🕬 🕭 🕮 🕯 🕰 🕱 🕲 🕳 🕴 🕵 🕶 🕷 🕸 🕹 🕻 🕼 🕽 ℡ 🕿 🖀 🖁 🖂 🖃 🖄 🖅 🖆 🖇 🖈 🖉 🖊 🖋 🖌 🖍 🖎 🖏 🖐 🖑 🖒 🖓 🖔 🖕 🖖 🖗 🖘 🖙 🖚 🖛 🖜 🖝 🖞 🖟 🖠 🖡 🖢 🖣 🖥 🖦 🖧 🖨 🖩 🖪 🖫 🖬 🖭 🖮 🖯 🖰 🖱 🖲 🖳 🖴 🖵 🖶 🖷 🖸 🖹 🖺 🖻 🖼 🖽 🖾 🖿 🗀 🗁 🗂 🗃 🗄 🗅 🗆 🗇 🗈 🗉 🗊 🗋 🗌 🗍 🗎 🗏 🗐 🗑 🗒 🗓 🗔 🗕 🗖 🗗 🗘 🗙 🗚 🗛 🗜 🗝 🗞 🗟 🗠 🗡 🗢 🗣 🗤 🗥 🗦 🗧 🗨 🗩 🗪 🗫 🗬 🗭 🗮 🗯 🗰 🗱 🗲 🗳 🗴 🗵 🗶 🗷 🗸 🗹 🗺 🗻 🗼 🗽 🗾 �
jueves, 3 de abril de 2014
Modos de "Debugear" Power Builder
Walt Whitman nos explica claramente las maneras de debugear powerbuilder, las cuales son:
A continuación el artículo:
http://www.joomla-gnu.com/programacion/powerbuilder-sysbase/177-debuggeando-en-powerbuilder.html?showall=&limitstart=
- Depuración Just In Time
- Depuración de Símbolo Preprocesador
- Depuración con botones de "Debug"
A continuación el artículo:
http://www.joomla-gnu.com/programacion/powerbuilder-sysbase/177-debuggeando-en-powerbuilder.html?showall=&limitstart=
lunes, 31 de marzo de 2014
Lo sentimos, estamos compilando

Jaja
miércoles, 26 de marzo de 2014
PowerBuilder y Configuración Regional de Windows

Estoy madrugando esta noche para corregir un grave problema de inventario erróneamente incrementado. Luego de revisar los ingresos al almacén descubro que el problema radica en la mala lectura de los tipos de cambio y los decimales en la aplicación.
Cuando la aplicación se usa en dos países con diferente configuración regional (separador de miles y de decimales), el uso de la propiedad "Edit Mask" de los campos de un datawindow no contempla la configuración regional de la PC del usuario.
La lectura correcta de los decimales se consigue mediante la propiedad "Format", que reconoce la configuración de los separadores de miles y decimales y adapta la visualización para el usuario.
Usando EditMask:
En Perú: 123,456.000
En Colombia: 123.456.000,000
Usando Format:
En Perú: 123,456.000
En Colombia: 123.456,000
Tomar en cuenta.
lunes, 16 de diciembre de 2013
Generar dígito de verificación de NIT de Colombia en PowerBuilder

Recientemente me he involucrado en un proyecto de implementación del ERP El Gestor a un cliente en Medellín, quien nos solicitó implementar el dígito de verificación que la DIAN obliga para el NIT de los proveedores.
Luego de algo de investigación, encontramos un post con el algoritmo en Visual Basic para excel, lo tradujimos a PowerScript y funcionó perfecto.
A continuación el código:
///********************************************************
//* FUNCION : fn_co_nitdv
//* FUNCION : Devuelve el Digito de Verificacion de un Nit (COLOMBIA)
//* PARAMETROS : _nit: Numero de Nit a Calcular en string
//* RETORNO : Digito de Verificación en string
//* AUTOR : Johan Gálvez (johangalvez@lylsistemas.com)
//********************************************************/
long WSuma, lnRetorno, Arreglo_PA[15], WDig_Ver, I
string WDato
_Nit = TRIM(_Nit)
if _Nit="" or isnull(_Nit) then
MESSAGEBOX("Error de NIT","El valor de NIT no puede ser nulo.")
RETURN 0
end if
Arreglo_PA[1] = 71
Arreglo_PA[2] = 67
Arreglo_PA[3] = 59
Arreglo_PA[4] = 53
Arreglo_PA[5] = 47
Arreglo_PA[6] = 43
Arreglo_PA[7] = 41
Arreglo_PA[8] = 37
Arreglo_PA[9] = 29
Arreglo_PA[10] = 23
Arreglo_PA[11] = 19
Arreglo_PA[12] = 17
Arreglo_PA[13] = 13
Arreglo_PA[14] = 7
Arreglo_PA[15] = 3
lnRetorno = 0
WDato=RIGHT(SPACE(15)+TRIM(_Nit),15)
WSuma=0
WDig_Ver=0
FOR I = 1 TO 15
WSuma=WSuma+(long(mid(WDato,I,1))*Arreglo_PA[I])
NEXT
WSuma=MOD(WSuma,11)
IF WSuma=0 OR WSuma=1 then
lnRetorno = WSuma
ELSE
lnRetorno = 11 - WSuma
END IF
RETURN lnRetorno
Etiquetas:
Colombia,
DIAN,
ERP,
NIT,
PowerBuilder
martes, 4 de junio de 2013
lunes, 8 de abril de 2013
WampServer: Liberar puerto 80 en Windows 7
Detener el servicio: "Servicio de Publicación World Wide Web"
Luego volver a intentar "Start All Services" del Wamp Server y listo
miércoles, 27 de febrero de 2013
WorkFlow ERP: Pasos para mostrar un formulario o pagina web
Despachar tarea pendiente
- Al abrir formulario
- Validación de proceso abierto en la fecha.
- Validación de tareas previas concluidas.
- Validación de estados de documentos de tarea.
- Validación de permisos de usuario para la tarea.
- Carga de información necesaria.
- Visualización según diseño.
- Al redactar
- Validación de redacción correcta
- Validación presupuestal (por ejemplo PCA y PIM)
- Al grabar
- Grabar datos del formulario (en cada documento de tarea).
- Grabar nuevos estados (de cada documento de tarea)
- Grabar estado de tarea realizado en proceso y usuario
- Grabar estado de tarea pendiente en proceso y usuario
- Grabar afectación contable
- Grabar afectación presupuestal
- Preguntar - Emitir notificación a interesados de tarea (por defecto: participantes anteriores) del proceso.
lunes, 4 de febrero de 2013
Power Builder: Luego de Filter() hacer Sort() y GroupCalc()
En Power Builder 9, luego del filter() es obligatorio volver a correr el ordenamiento SetSort() y Sort() y luego aplicar un GroupCalc():
===
//filtrado
string ls_filter, ls_ofi
ls_ofi = dw_oficinas.object.s_idofi[dw_oficinas.getrow()]
if isnull(ls_ofi) or ls_ofi = "%" then
ls_filter = ""
else
ls_filter = "idoficodigo='"+ls_ofi+"'"
end if
dw_rep_impresion.setfilter(ls_filter)
dw_rep_impresion.filter()
//Ordenamiento - Se pierde el sort al filtrar
dw_rep_impresion.SetRedraw(false)
dw_rep_impresion.SetSort("idmoncodigo, tvcfchvencim, tvcfchrecep, tvcnumero")
dw_rep_impresion.Sort( )
dw_rep_impresion.GroupCalc()
dw_rep_impresion.SetRedraw(true)
===
Alguien lo preguntó antes y me sirvió la respuesta
Saludos
===
//filtrado
string ls_filter, ls_ofi
ls_ofi = dw_oficinas.object.s_idofi[dw_oficinas.getrow()]
if isnull(ls_ofi) or ls_ofi = "%" then
ls_filter = ""
else
ls_filter = "idoficodigo='"+ls_ofi+"'"
end if
dw_rep_impresion.setfilter(ls_filter)
dw_rep_impresion.filter()
//Ordenamiento - Se pierde el sort al filtrar
dw_rep_impresion.SetRedraw(false)
dw_rep_impresion.SetSort("idmoncodigo, tvcfchvencim, tvcfchrecep, tvcnumero")
dw_rep_impresion.Sort( )
dw_rep_impresion.GroupCalc()
dw_rep_impresion.SetRedraw(true)
===
Alguien lo preguntó antes y me sirvió la respuesta
Saludos
miércoles, 5 de diciembre de 2012
Colores en Power Builder
Estimados,
Encontré esta tabla de colores de Power Builder y la publico para que no se pierda... porsupuesto con link a la fuente
Encontré esta tabla de colores de Power Builder y la publico para que no se pierda... porsupuesto con link a la fuente
jueves, 6 de septiembre de 2012
PowerBuilder con Word
He encontrado este artículo en http://www.lawebdelprogramador.com/foros/Power_Builder/764974-PowerBuilder_con_Word.html
Y como me ha sido de mucha ayuda, me he permitido traerlo por si un día lo quitan
Saludos
Y como me ha sido de mucha ayuda, me he permitido traerlo por si un día lo quitan
Saludos
| Asunto: | PowerBuilder con Word |
| Autor: | Miguel Zurita R. (2 intervenciones) |
| Fecha: | 28/02/2007 14:22:05 |
A toda la gente que intenta trabajar con Word
ahi va eso
esto esta probado con PB 8 y word 2003
OLEObject ole_object
integer li_result, li_n,NbrRows
string ls_nombre , str
long i_handle
str = "New Text"
ole_object = CREATE OleObject
li_result = ole_object.ConnectToNewObject("word.application")
IF li_result <> 0 THEN
DESTROY ole_object
MessageBox("OLE Error", "No puede conectarse a Word " &
+ "Código: " &
+ String(li_result))
SetPointer(Arrow!)
RETURN
END IF
//Abrir el documento
ole_object.documents.open("C:\Prueba.doc")
ole_object.visible=true
//Para crear un documento nuevo basado en Normal.dot
//OLE_OBJECT.Documents.Add()
//Tamaño papel
//Tabloid=1, Letter=2, Legal=4, Executive=5,A3=6, A5=9, etc.
ole_object.ActiveDocument.pagesetup.Papersize= 7 // A4
//Orientación
ole_object.ActiveDocument.pagesetup.Orientation= 1 // Portrait
//Márgenes
ole_object.ActiveDocument.pagesetup.LeftMargin=ole_object.CentimetersToPoints( 2.5)
ole_object.ActiveDocument.pagesetup.RightMargin=ole_object.CentimetersToPoints( 2)
ole_object.ActiveDocument.pagesetup.TopMargin=ole_object.CentimetersToPoints( 2.5)
ole_object.ActiveDocument.pagesetup.BottomMargin=ole_object.CentimetersToPoints( 2)
//Insert algún texto en un nuevo párrafo
ole_object.Selection.Font.Name = "Verdana"
ole_object.Selection.Font.Bold = TRUE
ole_object.Selection.Font.Italic = TRUE
ole_object.Selection.Font.Underline = TRUE
ole_object.Selection.Font.Color =rgb(255,0,0)
ole_object.Selection.Font.Size = 16
ole_object.Selection.TypeParagraph()
ole_object.selection.ParagraphFormat.Alignment = 1
ole_object.Selection.TypeText( "TITULO" + '~r~n')
ole_object.Selection.Font.Size = 10
ole_object.selection.ParagraphFormat.Alignment = 2
ole_object.Selection.TypeText( 'Dia : ' + string(today() , 'yyyy/mm/dd?') + '~r~n')
ole_object.Selection.typetext("~n")
ole_object.selection.ParagraphFormat.Alignment = 3
ole_object.Selection.typetext("prueba")
ole_object.Selection.typetext("~n")
ole_object.Selection.TypeParagraph()
//Selecciona la parte indicada
//ole_object.selection.MoveLeft(1,8,1)
//ole_object.selection.TypeBackspace()
//ole_object.selection.goto(true,0,0,str)
// inserta un marcador
ole_object.ActiveDocument.bookmarks.add("bookmark_name")
ole_object.ActiveDocument.Bookmarks.item("bookmark_name").Select
ole_object.Selection.typetext("Hola Mundo!")
// ir a la linea ...
// ole_object.selection.GoToNext(0)
//abre el cuadro de gramatica
//ole_object.ActiveDocument.CheckGrammar()
//abre el cuadro de Ortografia
//ole_object.ActiveDocument.CheckSpelling()
// Insertar texto en el marcador llamado Final
//GUARDAR EL DOCEMENTO ACTIVO COMO ...
//ole_object.ActiveDocument.SaveAs("C:\plantilla_word2.doc")
//ole_object.quit(0)
ole_object.disconnectobject( )
destroy ole_object
///*******************************************************************************
//ole_object.selection.Information[12]
//ole_object.selection.MoveLeft(1,5,1)
//ole_object.selection.TypeBackspace()
//ole_object.ActiveDocument.CheckSpelling()
//ole_object.Selection.Font.Italic = TRUE
//ole_object.Selection.Font.bold = TRUE
//ole_object.Selection.Font.Name = "Arial"
//ole_object.Selection.Font.Size = 24
//ole_object.Selection.Words[1].Italic = True
//ole_object.ActiveDocument.Paragraphs[1].Range.Font = "Arial"
//ole_object.selection.GoTo(TRUE,0,0,"state")
//ole_object.selection.GoToNext(3)
//ole_object.Selection.Find.Forward = True
//ole_object.Selection.ClearFormatting
//ole_object.Selection.MatchWholeWord = True
//ole_object.Selection.MatchCase = False
//ole_object.Selection.Wrap = wdFindContinue
//ole_object.Selection.Execute("PowerBuilder")
//
///*******************************************************************************
//i_handle = OpenChannel("Word","System")
//IF i_handle > 0 THEN
//messagebox('Atención','Word Pro Abierto',exclamation!)
//CloseChannel(i_handle)
//ELSE
// MESSAGEBOX("Titulo","NADA DE NADA")
//return 0
//END IF
//
ahi va eso
esto esta probado con PB 8 y word 2003
OLEObject ole_object
integer li_result, li_n,NbrRows
string ls_nombre , str
long i_handle
str = "New Text"
ole_object = CREATE OleObject
li_result = ole_object.ConnectToNewObject("word.application")
IF li_result <> 0 THEN
DESTROY ole_object
MessageBox("OLE Error", "No puede conectarse a Word " &
+ "Código: " &
+ String(li_result))
SetPointer(Arrow!)
RETURN
END IF
//Abrir el documento
ole_object.documents.open("C:\Prueba.doc")
ole_object.visible=true
//Para crear un documento nuevo basado en Normal.dot
//OLE_OBJECT.Documents.Add()
//Tamaño papel
//Tabloid=1, Letter=2, Legal=4, Executive=5,A3=6, A5=9, etc.
ole_object.ActiveDocument.pagesetup.Papersize= 7 // A4
//Orientación
ole_object.ActiveDocument.pagesetup.Orientation= 1 // Portrait
//Márgenes
ole_object.ActiveDocument.pagesetup.LeftMargin=ole_object.CentimetersToPoints( 2.5)
ole_object.ActiveDocument.pagesetup.RightMargin=ole_object.CentimetersToPoints( 2)
ole_object.ActiveDocument.pagesetup.TopMargin=ole_object.CentimetersToPoints( 2.5)
ole_object.ActiveDocument.pagesetup.BottomMargin=ole_object.CentimetersToPoints( 2)
//Insert algún texto en un nuevo párrafo
ole_object.Selection.Font.Name = "Verdana"
ole_object.Selection.Font.Bold = TRUE
ole_object.Selection.Font.Italic = TRUE
ole_object.Selection.Font.Underline = TRUE
ole_object.Selection.Font.Color =rgb(255,0,0)
ole_object.Selection.Font.Size = 16
ole_object.Selection.TypeParagraph()
ole_object.selection.ParagraphFormat.Alignment = 1
ole_object.Selection.TypeText( "TITULO" + '~r~n')
ole_object.Selection.Font.Size = 10
ole_object.selection.ParagraphFormat.Alignment = 2
ole_object.Selection.TypeText( 'Dia : ' + string(today() , 'yyyy/mm/dd?') + '~r~n')
ole_object.Selection.typetext("~n")
ole_object.selection.ParagraphFormat.Alignment = 3
ole_object.Selection.typetext("prueba")
ole_object.Selection.typetext("~n")
ole_object.Selection.TypeParagraph()
//Selecciona la parte indicada
//ole_object.selection.MoveLeft(1,8,1)
//ole_object.selection.TypeBackspace()
//ole_object.selection.goto(true,0,0,str)
// inserta un marcador
ole_object.ActiveDocument.bookmarks.add("bookmark_name")
ole_object.ActiveDocument.Bookmarks.item("bookmark_name").Select
ole_object.Selection.typetext("Hola Mundo!")
// ir a la linea ...
// ole_object.selection.GoToNext(0)
//abre el cuadro de gramatica
//ole_object.ActiveDocument.CheckGrammar()
//abre el cuadro de Ortografia
//ole_object.ActiveDocument.CheckSpelling()
// Insertar texto en el marcador llamado Final
//GUARDAR EL DOCEMENTO ACTIVO COMO ...
//ole_object.ActiveDocument.SaveAs("C:\plantilla_word2.doc")
//ole_object.quit(0)
ole_object.disconnectobject( )
destroy ole_object
///*******************************************************************************
//ole_object.selection.Information[12]
//ole_object.selection.MoveLeft(1,5,1)
//ole_object.selection.TypeBackspace()
//ole_object.ActiveDocument.CheckSpelling()
//ole_object.Selection.Font.Italic = TRUE
//ole_object.Selection.Font.bold = TRUE
//ole_object.Selection.Font.Name = "Arial"
//ole_object.Selection.Font.Size = 24
//ole_object.Selection.Words[1].Italic = True
//ole_object.ActiveDocument.Paragraphs[1].Range.Font = "Arial"
//ole_object.selection.GoTo(TRUE,0,0,"state")
//ole_object.selection.GoToNext(3)
//ole_object.Selection.Find.Forward = True
//ole_object.Selection.ClearFormatting
//ole_object.Selection.MatchWholeWord = True
//ole_object.Selection.MatchCase = False
//ole_object.Selection.Wrap = wdFindContinue
//ole_object.Selection.Execute("PowerBuilder")
//
///*******************************************************************************
//i_handle = OpenChannel("Word","System")
//IF i_handle > 0 THEN
//messagebox('Atención','Word Pro Abierto',exclamation!)
//CloseChannel(i_handle)
//ELSE
// MESSAGEBOX("Titulo","NADA DE NADA")
//return 0
//END IF
//
Etiquetas:
Desarrollo,
ole_object,
PowerBuilder,
Word
miércoles, 10 de agosto de 2011
Iniciar proyecto con Power Builder y Subversion
Pautas Generales:
1. Obligatorio leer: "Buenas Prácticas de Gestión de Versiones con Subversion", de allí lo más importante:
4. La dirección del Repositorio será de la siguiente forma: https://servidor.int/svn/Aplicacion/
5. El desarrollo lo haremos en la carpeta trunk del repositorio: https://servidor.int/svn/Aplicacion/trunk/
I. Instalación Inicial de las fuentes en el Servidor
1.1 Poner la versión inicial de las fuentes en el trunk
1.2 Hacer el primer tag llamado 1.0.0
II. Instalación inicial de cada desarrollador
2.1 Crear las carpetas "SVN-WORK" y "FUENTES"
2.2 En SVN-WORK se hará el primer update para descargar la versión a su copia de trabajo.
2.3 En la carpeta fuentes se deben grabar las fuentes (objetos PB: pbl, pbw, pbc...)
III. Instrucciones para el trabajo diario
Antes de editar un objeto de un PBL se debe coger con "CheckOut" y luego se podrá editar. Con esto también se bloquea el acceso de otros desarrolladores al objeto.
Al terminar la edición, se hace "CheckIn" que sube los cambios al repositorio
También se puede descartar los cambios trayendo la última versión del objeto con "Get Latest Version..."
1. Obligatorio leer: "Buenas Prácticas de Gestión de Versiones con Subversion", de allí lo más importante:
- Trunk: Rama de desarrollo principal, nuestro desarrollo será en esta carpeta.
- Tags: Rama de gestión de versiones. Reservado para versiones cerradas, por tanto no se desarrollará sobre esta rama. Cada versión corresponde con los entregables del sistema.
- Branches: Rama con evoluciones paralelas al Trunk. No utilizar salvo para desarrollos auxiliares, levantamiento de errores que luego llevaremos al trunk y tag para pasar a producción.
2. Trabajaremos usando un servidor Subversion para el control de versiones y PBSCC para descomponer los objetos de los PBL de Power Builder, como expliqué en este post.
3. Antes de comenzar el desarrollo necesitaremos instalar: en el servidor el VisualSVN, y en cada cliente el TortoiseSVN y PBSCC pra el control de fuentes con Power Builder.4. La dirección del Repositorio será de la siguiente forma: https://servidor.int/svn/Aplicacion/
5. El desarrollo lo haremos en la carpeta trunk del repositorio: https://servidor.int/svn/Aplicacion/trunk/
I. Instalación Inicial de las fuentes en el Servidor
1.1 Poner la versión inicial de las fuentes en el trunk
1.2 Hacer el primer tag llamado 1.0.0
II. Instalación inicial de cada desarrollador
2.1 Crear las carpetas "SVN-WORK" y "FUENTES"
2.2 En SVN-WORK se hará el primer update para descargar la versión a su copia de trabajo.
2.3 En la carpeta fuentes se deben grabar las fuentes (objetos PB: pbl, pbw, pbc...)
III. Instrucciones para el trabajo diario
Antes de editar un objeto de un PBL se debe coger con "CheckOut" y luego se podrá editar. Con esto también se bloquea el acceso de otros desarrolladores al objeto.
Al terminar la edición, se hace "CheckIn" que sube los cambios al repositorio
También se puede descartar los cambios trayendo la última versión del objeto con "Get Latest Version..."
Etiquetas:
Buenas Prácticas,
PowerBuilder,
Subversion
sábado, 6 de agosto de 2011
Disciplina de Gestión de Proyectos
Es una Disciplina de Soporte de RUP.
Usamos la herramienta del RUP. Está entre las disciplinas
Tarea: ¿Cómo justificaríamos invertir en el proyecto?
La Gestión del Proyecto se hace desde que me aprueban el Proyecto. En realidad es el Acta de Constitución del Proyecto (Project Charter) la que da inicio a RUP.
Al inicio el Gestor de Proyecto debe hacer estos tres documentos:
El Project Charter lo firman:
El sponsor
El jefe de Sistemas
El jefe de la oficina que hizo el requerimiento
El jefe de alguna oficina con la que se integra el sistema.
Práctica la próxima clase, va a venir un enunciado para identificar objetos y clases. También conceptos básicos de UML.
Usamos la herramienta del RUP. Está entre las disciplinas
Tarea: ¿Cómo justificaríamos invertir en el proyecto?
La Gestión del Proyecto se hace desde que me aprueban el Proyecto. En realidad es el Acta de Constitución del Proyecto (Project Charter) la que da inicio a RUP.
Al inicio el Gestor de Proyecto debe hacer estos tres documentos:
- Casos de negocio
- Lista de Riesgos
- Plan de Desarrollo de Software
El Project Charter lo firman:
El sponsor
El jefe de Sistemas
El jefe de la oficina que hizo el requerimiento
El jefe de alguna oficina con la que se integra el sistema.
Práctica la próxima clase, va a venir un enunciado para identificar objetos y clases. También conceptos básicos de UML.
viernes, 5 de agosto de 2011
Introducción al UML
1. Fundamentos del UML
Es un lenguaje Unificado de Modelado.
Tiene la característica de estar orientado a objetos.
Tiene gramática, sintaxis, elementos, reglas para nombrar estos elementos.
Estándar para el modelado de sistemas.
Es una notación, no es un proceso, ni es una metodología (como es RUP)
Creado en 1997. Se basa en metodologías antiguas: OMT, Booch, OOSE
Hubo cambios fuertes desde la versión 2.0 (en 2004)
Se espera que la versión 2.5 tenga grandes cambios también (aún no sale)
2. Estructura de UML
Elementos de UML
7 Elementos que intervienen en todos los diagramas: Clases, Interfaz, Colaboración, Casos de Uso, Clase Ativa, Componente y Nodo.
Curiosidad: Los actores son clases con un estereotipo
Los componentes son las librerías... los archivos físicos
Los componentes van en los nodos, son los equipos, servidores, discos duros... inclusive pueden ser hubs, routers... si es necesario
2 Elementos de Comportamiento:
Son la interacciones (flechas) y la Máquina de Estados (rectángulo redondeado)
Elemento de Agrupación: El Paquete
Elemento de Anotación: La Nota
Relaciones UML
Relación de Dependencia
Un elemento depende de otro

Relación de Asociación
Dos elementos necesitan trabajar en conjunto

Relación de Generalización
Apunta hacia el elemento general

Relación de realización
Un elemento de colaboración ayuda al caso de uso. Apunta hacia el caso de uso.

Diagramas UML
UML1.x
9 diagramas:
Diagrama de clases: de análisis, de diseño, de negocio. Varían por el estereotipo. Los únicos elementos son clases y relaciones (solo línea contínua)
Diagrama de casos de Uso: dos diagramas
Casos de Uso de Negocio: Expresa los procesos de la empresa, todos aquellos procesos que tienen relación con el sistema. El Actor (StickMan) y los casos de uso llevan un estereotipo de línea diagonal. La relación es una asociación simple sin flecha.
Casos de Uso del Sistema: Expresa las funciones de un sistema
Diagrama de Objetos: Modela las instancias de los elementos. Grafican un ejemplo, una instantánea.
Diagramas de Secuencia: Compuesto de Objetos, instanciados de una clase que ya exista. Es un modelo de análisis. Es una secuencia de mensajes y corresponde exactamente lo que debe ocurrir en un caso de uso. Es importante el orden en el que se envían los mensajes.
Diagrama de Colaboración: Corresponde al diagrama de secuencia, pero de distinta forma.
Diagrama de Estados: Muestra un valor de un atributo. Normalmente va pegado a una clase. Las líneas llevan los eventos y los mensajes. Tienen un solo inicio y pueden tener varios finales.
Diagrama de Actividades: Parecidos a los diagramas de flujo. Un solo inicio, las actividades son atómicas (no pueden ser subdividido). Corresponden a una operación o un caso de uso.
Diagrama de Componentes: Para los archivos físicos.
Diagrama de Despliegue: Va junto al de componentes. Muestra qué componentes van en qué nodo (servidor, pc de usuario y otros elementos de la red también).
UML2.x
Han cambiado algunas cosas:
d. de actividad tiene nuevos elementos
d. de Estados ahora se llama Máquina de Estado
d. Secuencia tmabién tiene nuevos elementos.
Diagrama de Visión de Interacción: Nuevo diagrama que muestra la secuencia entre diagramas, parecido al diagrama de actividad. Realmente puede expresar la secuencia de varias cosas, no solo casos de uso, como una caja negra.
Diagrama de tiempos: Para programar tiempos en dispositivos o piezas de software.
d. Comunicación es el de colaboración
Diagrama de Paquetes, aunque ya se usaba intuitivamente.
Diagrama de Estructura Compuesta: para software que pueden crear su propia estructura de clase o nuevos tipos de datos.
Hay una Estructura Taxonómica que categoriza los diagramas entre d. de Estructura (estáticos) y de Comportamiento (dinámicos)
También en la versión 2.0 aparecen los frames que tienen etiquetas: pkg, cmp (componentes), uc, act, stm (Máquina de Estado) y sd (d. de interacción)
Mecanismos Comunes
Elementos de Apoyo que ayudan a entender mejor el diagrama.
Especificación. un documento que ayuda a poner por escrito precondiciones, post condiciones, restricciones, errores, etc
3. Arquitectura UML
4+1
REGLAS EN UML
- En entidades de negocio es necesario poner las clases y luego instanciarlas... en el modelo de Trabajadoers de Negocio, no es necesario crear las clases... solo se ponen objetos.
- Se puede subir los archivos de Enterprise Arquitect al subversion... leer esto
==
Precisiones:
El estereotipo es para los elementos, y es obligatorio en todos los diagramas y puede aparecer gráficamente o escrito.
El actor es una clase
Nunca poner BusinessWorker en un diagrama de Casos de Uso!
En las casos de uso no va la secuencia
==
Para el trabajo:
- Power Builder puede ser usado orientado a objetos? Sí... leer por qué
- Se puede subir los archivos de Enterprise Arquitect al subversion... leer esto
- Debo llegar a una nueva implementación del Gestor con un avance de los diagramas con Enterprise Arquitect.
Es un lenguaje Unificado de Modelado.
Tiene la característica de estar orientado a objetos.
Tiene gramática, sintaxis, elementos, reglas para nombrar estos elementos.
Estándar para el modelado de sistemas.
Es una notación, no es un proceso, ni es una metodología (como es RUP)
Creado en 1997. Se basa en metodologías antiguas: OMT, Booch, OOSE
Hubo cambios fuertes desde la versión 2.0 (en 2004)
Se espera que la versión 2.5 tenga grandes cambios también (aún no sale)
2. Estructura de UML
Elementos de UML
7 Elementos que intervienen en todos los diagramas: Clases, Interfaz, Colaboración, Casos de Uso, Clase Ativa, Componente y Nodo.
Curiosidad: Los actores son clases con un estereotipo
Los componentes son las librerías... los archivos físicos
Los componentes van en los nodos, son los equipos, servidores, discos duros... inclusive pueden ser hubs, routers... si es necesario
2 Elementos de Comportamiento:
Son la interacciones (flechas) y la Máquina de Estados (rectángulo redondeado)
Elemento de Agrupación: El Paquete
Elemento de Anotación: La Nota
Relaciones UML
Relación de Dependencia
Un elemento depende de otro
Relación de Asociación
Dos elementos necesitan trabajar en conjunto
Relación de Generalización
Apunta hacia el elemento general
Relación de realización
Un elemento de colaboración ayuda al caso de uso. Apunta hacia el caso de uso.
Diagramas UML
UML1.x
9 diagramas:
Diagrama de clases: de análisis, de diseño, de negocio. Varían por el estereotipo. Los únicos elementos son clases y relaciones (solo línea contínua)
Diagrama de casos de Uso: dos diagramas
Casos de Uso de Negocio: Expresa los procesos de la empresa, todos aquellos procesos que tienen relación con el sistema. El Actor (StickMan) y los casos de uso llevan un estereotipo de línea diagonal. La relación es una asociación simple sin flecha.
Casos de Uso del Sistema: Expresa las funciones de un sistema
Diagrama de Objetos: Modela las instancias de los elementos. Grafican un ejemplo, una instantánea.
Diagramas de Secuencia: Compuesto de Objetos, instanciados de una clase que ya exista. Es un modelo de análisis. Es una secuencia de mensajes y corresponde exactamente lo que debe ocurrir en un caso de uso. Es importante el orden en el que se envían los mensajes.
Diagrama de Colaboración: Corresponde al diagrama de secuencia, pero de distinta forma.
Diagrama de Estados: Muestra un valor de un atributo. Normalmente va pegado a una clase. Las líneas llevan los eventos y los mensajes. Tienen un solo inicio y pueden tener varios finales.
Diagrama de Actividades: Parecidos a los diagramas de flujo. Un solo inicio, las actividades son atómicas (no pueden ser subdividido). Corresponden a una operación o un caso de uso.
Diagrama de Componentes: Para los archivos físicos.
Diagrama de Despliegue: Va junto al de componentes. Muestra qué componentes van en qué nodo (servidor, pc de usuario y otros elementos de la red también).
UML2.x
Han cambiado algunas cosas:
d. de actividad tiene nuevos elementos
d. de Estados ahora se llama Máquina de Estado
d. Secuencia tmabién tiene nuevos elementos.
Diagrama de Visión de Interacción: Nuevo diagrama que muestra la secuencia entre diagramas, parecido al diagrama de actividad. Realmente puede expresar la secuencia de varias cosas, no solo casos de uso, como una caja negra.
Diagrama de tiempos: Para programar tiempos en dispositivos o piezas de software.
d. Comunicación es el de colaboración
Diagrama de Paquetes, aunque ya se usaba intuitivamente.
Diagrama de Estructura Compuesta: para software que pueden crear su propia estructura de clase o nuevos tipos de datos.
Hay una Estructura Taxonómica que categoriza los diagramas entre d. de Estructura (estáticos) y de Comportamiento (dinámicos)
También en la versión 2.0 aparecen los frames que tienen etiquetas: pkg, cmp (componentes), uc, act, stm (Máquina de Estado) y sd (d. de interacción)
Mecanismos Comunes
Elementos de Apoyo que ayudan a entender mejor el diagrama.
Especificación. un documento que ayuda a poner por escrito precondiciones, post condiciones, restricciones, errores, etc
3. Arquitectura UML
4+1
REGLAS EN UML
Hay consideraciones, las cosas no pueden combinarse de cualquier manera, existen reglas.
Hay reglas para nombres, alcance, visibilidad y 2 mas
Para nombres:
La dependencia entre casos de uso include y extend.
Nombes de caso de uso de sistema se escriben en infinitivo, los nombres de casos de uso de negocio no tienen reglas porque dependen de cada negocio.
Para alcance: Da el significado específico a un nombre. Me dice cuando mostrar o no mostrar cosas. Como el include que en los casos de uso nunca van de uno con uno.
Para visibilidad: los signos (+ u otros ). O la regla que dice que siempre debe haber estereotipo gráfica o textualmente.
Para integridad: relaciones apropiadas entre elementos.
Ejm: Un actor q no puede tener include con un caso de uso. include entre dos casos de uso.
Para Ejecución
Luego usamos el Enterprise Arquitect
- Herramienta poderosa... licenciada... pero no es fiel a UML para analisis de negocio
- Copy and Paste poderosos... al pegar en Word le pone automáticamente el frame
- Crear los elementos en sus paquetes y luego traerlos al diagrama como vínculo.
- Asegurarse de abrir el diagrama correcto con doble click... pasa seguido que ponemos actores en un sitio y no era...
- En Business Entities, para crear los objetos de negocio, debemos crear un diagrama de objetos, luego crear la clase (son clases creadas para apoyo nomás, no son las clases finales del sistema), luego instanciarla
- De Business Entity a Entity para al final poner tener las clases reales del software
- En entidades de negocio es necesario poner las clases y luego instanciarlas... en el modelo de Trabajadoers de Negocio, no es necesario crear las clases... solo se ponen objetos.
- Se puede subir los archivos de Enterprise Arquitect al subversion... leer esto
==
Precisiones:
El estereotipo es para los elementos, y es obligatorio en todos los diagramas y puede aparecer gráficamente o escrito.
El actor es una clase
Nunca poner BusinessWorker en un diagrama de Casos de Uso!
En las casos de uso no va la secuencia
==
Para el trabajo:
- Power Builder puede ser usado orientado a objetos? Sí... leer por qué
- Se puede subir los archivos de Enterprise Arquitect al subversion... leer esto
- Debo llegar a una nueva implementación del Gestor con un avance de los diagramas con Enterprise Arquitect.
Analisis y Diseño Orientado a Objetos
La Crisis del Software
Casos del Dpto de vehiculos motorizados de California y el caso de American Airlines
Razones:
Base Inestable, documentos no están estandarizados, formatos diferentes... diseños incomprensibles
Fallas en el Manejo de riesgo, faltó plan de contingencia, no planteó estrategia... y ante los problemas, no hay acción.
La complejidad del SW. Coplejidad en la lógica, complejidad en los procesos de negocio que conllevan a procesos automatizados complejos.
Soluciones:
Los objetos tienen los nombres subrayados
==
Ejercicio: se han resaltado las clases en el siguiente enunciado:
Casos del Dpto de vehiculos motorizados de California y el caso de American Airlines
Razones:
Base Inestable, documentos no están estandarizados, formatos diferentes... diseños incomprensibles
Fallas en el Manejo de riesgo, faltó plan de contingencia, no planteó estrategia... y ante los problemas, no hay acción.
La complejidad del SW. Coplejidad en la lógica, complejidad en los procesos de negocio que conllevan a procesos automatizados complejos.
Soluciones:
- Buen análisis y Diseño, RUP tiene contemplado todas las herramientas para esto.
- Conservar un modelado sencillo. Programación lo más sencilla posible
- Usar un lenguaje de modelamiento común
- Compatible con diversas herramientas, no siempre tenemos las herramientas con las licencias... es mejor exportar los documentos a forma libre o estándar.
UML es necesario porque es un lenguaje estandarizado que permite graficar el sistema desde todas las perspectivas, por dentro y por fuera.. en cada evento, cada botón, cómo se registra en la base de datos, qué componentes salen producto de esa implementación y cómo se va a desplegar la aplicación.
Así como vamos a picar nuestras paredes y suelos de casa para poner el gas natural cuando no lo contemplamos en los planos, así también parcharemos los sistemas a la mala cuando tengamos que poner nuevas funcionalidades en nuestras aplicaciones.
Para lograr esto el concepto de orientación a objetos es muy útil, podremos armar el sistema como armando un rompecabezas.
Los objetos son comunes en la realidad, al nacer la RENIEC nos exige registrar a cada bebe. Así se reconoce la individualidad de cada persona. Y a su vez necesita información específica de cada uno, no quieren saber nuestro signo zodiacal o tipo de sangre, ellos necesitan los nombres, apellidos, fecha de nacimiento, y algunos datos más. No todos, solo algunos datos. Una universidad pide otro tipo de información, y así cada realidad exige distintos datos del objeto.
Un objeto posee características y comportamiento propios, únicos e inconfundibles.
Un buen análisis buscará encontrar esos elementos que lo hacen único e inconfundible.
Nunca asumir nada, siempre hay que analizar y preguntar siempre para conocer la identidad de un objeto.
Siempre observar las reglas de negocio preguntando
Los objetos tienen dos elementos: Atributos y Operaciones.
Los estados son valores de los atributos: Prendido, Apagado, Activo, Inacivo, Casado, Soltero, Aprobado, Desaprobado...
Siempre que vamos a hacer un sistema, se pregunta el alcance, para qué es el sistema y deben decirme qué atributos usar. Sino, corremos el riesgo de asumir.
==
Ejercicio: Hemos resaltado los objetos de este enunciado:
Juan Pérez es profesor del curso de Ingeniería de software dictado en la Escuela de Sistemas de la Facultad de Sistemas de la Universidad Peruana de Ciencias Aplicadas, también lo dicta en la escuela de sistemas de la Facultad de Sistemas de la UNI. Juan Pérez es profesor contratado en la UNI, pero es profesor nombrado en la Universidad. Es profesor principal en la UNI y es profesor asociado en la Universidad Peruana de Ciencias Aplicadas. Nació en Arequipa pero actualmente vive en Lima.
Pedro Alegría ingresa su código de estudiante al sistema de Reserva de cursos, el sistema le pregunta por el semestre a matricularse y este le indica que corresponde al semestre 2003-02, luego elige de la lista de horarios existentes, el horario nocturno.
De una lista de cursos disponibles, Pedro elige Inglés Básico, Electrónica Digital y Algoritmos Matemáticos. Como cursos electivos escoge Teoría de la Música y Programación en C++.
El sistema de Reservas de Cursos determina que los datos son conformes y le imprime el comprobante N° 0015264 para que se acerque al departamento de Caja puesto que internamente se acaba de enviar sus datos al sistema de Cobranzas para su proceso.
==
Programación Orientada a Objetos (características de objetos)
- Abstracción
- Encapsulamiento
- Cliente Servidor
- Jerarquía (dependencia) de dos tipos: Generalización (herencia) y Agregación (agrupamiento)
- Polimorfismo, una entidad que puede tomar diversas formas
- Modularidad, subdividir en partes más pequeñas para darles independencia
- Persistencia, capacidad de poder almacenarse en un lugar fijo para poder existir.
Clases
- Guía de estilo que recomienda RUP:
- Usar sustantivo singular
- Empezar con mayúscula
- No usar subrayado (los subrayado se usan en objetos, no en clases)
- Los nombres compuestos se escriben juntos.
Graficando:
Objeto:
==
Ejercicio: se han resaltado las clases en el siguiente enunciado:
En la base de datos de la Universidad Peruana de Ciencias Aplicadas, se representan datos sobre estudiantes y profesores. Para los estudiantes, se representa el apellido, edad, sexo, ciudad y provincia de nacimiento, ciudad y provincia de residencia de sus familias, lugares y provincias donde vivieron antes (con el lapso que vivieron en cada uno), cursos que han aprobado, con nombre, código, profesor, nota y fecha. Aunque para el caso de Alicia Fernández fue difícil registrar el lugar de residencia de sus padres porque es huérfana y su familia actual no recordaba ese dato.
Asimismo, se representan los cursos a los que un alumno asiste en la actualidad y, para cada uno, día, sitios y horas de dictado de las clases (cada curso se imparte a lo sumo una vez en un día).
Para estudiantes graduados, se representa el nombre del consejero y el número total de créditos en el último año. El Ing. Rubén De la Cruz es consejero de esta universidad por más de tres años consecutivos pero dejo de ser docente el ciclo pasado.
Para estudiantes de doctorado, se representa el título y área de investigación de sus tesis. Para los maestros, se representa el apellido, edad, lugar y provincia de nacimiento, nombre del departamento académico al que pertenecen, número de teléfono, título, situación y temas de investigación.
Algunos temas de investigación, como la Exportación de Espárragos, ya están prohibidos por haberse saturado el número de tesis presentadas.
==
Por qué fracasan los Proyectos de Software
Nos ponen algunas pero tienen maneras de resolverlas, RUP ofrece mejores practicasAplicar una metodología pero apliquémosla bien: una metodología y un lenguaje común
=====
Reflexiones para el trabajo:
- El Gestor no es Modulado... se puede hacer algo con esto?
- Control de versionamiento siempre
miércoles, 27 de julio de 2011
El futuro del desarrollador es positivo...
Encontré un artículo muy interesante de Hason Hiner que dice que la siguiente década es de los desarrolladores, a continuación algunos apuntes de este alentador informe:
- La década de los desarrolladores, conlleva a la década de las factorías y las app stores.
- Crear aplicaciones será más barato que modificarlas.
- Modular el ERP para transferir información en XML, adquirir estándares abiertos..? Aún no está claro usar el XML en ERP... mi entrada anterior
- Es un ambiente en el que sobrevive el más apto desarrollador. En este entorno, los desarrolladores tienen grandes oportunidades para la independencia y la creatividad. Los desarrolladores individuales y pequeños equipos de desarrolladores (a veces en colaboración con los diseñadores y gestores de proyectos) ahora pueden construir mini-imperios por sí mismos, gracias a los sistemas de micropagos tipo PayPal que permiten tener prácticamente toda la infraestructura necesaria para iniciar una empresa de consultoría negocio.
- De día en una gran empresa, de noche, freelance
- No importa tanto la ubicación para encontrar clientes. Correo electrónico, skype y una carpeta web respetable de productos.
- Tampoco importa la ubicación para trabajar colaborativamente.
¡¡¡¡ Aumentará la demanda de software: Ojo: la web se mete en la casa!!!!
- Otra idea es poner el ERP en la nube y ofrecerlo
- Habrá mayor presión para las oficinas de TI porque los usuarios se familiarizarán más aún con los sistemas y serán más exigentes. Habrá mayores tercerizaciones de servicios de TI. Los desarrolladores serán el centro de la atención.
Reflexión:
Yo debo saber hacer aplicaciones:
- Multiplataforma (windows, linux, web)
- Que hagan funciones "básicas":
- Enviar correo
- gestión de archivos
- Login, manejo de usuarios, quizá LDAP
ERP y XML
Buscando la manera de mejorar mis aplicaciones pensé que dar al ERP funcionalidad de compartir y almacenar información en xml sería interesante, pero no luego de leer algunas opiniones, no termino por convenserme...
Leí el artículo de Doug Potter que me dio más elementos, pero que nos deja con la encrucijada.
sábado, 23 de julio de 2011
Gestión de Riesgos en Proyectos de Software
Antes de la Clase:
Navegando en el RUP (Notas)
Glosario de Empresa
Glosario del Proyecto
Podrían estar en uno solo Glosario
Todos los documentos tienen una lista de comprobación o CheckList
No todos los documentos tienen ejemplos.
Los dominios son equivalentes (9) a las disciplinas (9)
Navegando en el RUP (Notas)
Glosario de Empresa
Glosario del Proyecto
Podrían estar en uno solo Glosario
Todos los documentos tienen una lista de comprobación o CheckList
No todos los documentos tienen ejemplos.
Los dominios son equivalentes (9) a las disciplinas (9)
Riesgos
Positivos (Oportunidades):
Aprueban presupuesto adicional,
Negativos (Amenazas):
Recortes presupuestales, Fusión, rotación de personal, cambio de sponsor...
Tipos de Riesgos
Directos (Se tiene control)
Indirectos (No se tiene control)
Terremotos, Cambio de Leyes,
Se pueden tener Planes de acción
Proceso de Gestión de Riesgos
1. Identificación de Riesgos
3. Seleccionar los Riesgos a Gestionar
4. Plan de Gestión
===
Reflexiones
Terremotos, Cambio de Leyes,
Se pueden tener Planes de acción
Proceso de Gestión de Riesgos
1. Identificación de Riesgos
- Tormentas de idea... para identificar riesgos
- Herramientas para la gestión del Riesgo
2. Análisis de Riesgos
3. Seleccionar los Riesgos a Gestionar
4. Plan de Gestión
- Hay responsables de cada riesgo
- Transferir: Se puede transferir el riesgo a un tercero: tercerizar. Pero se le debe hacer seguimiento
- Aceptar el riesgo
- Evitar, no tomo el riesgo
- Mitigar, tomar acción para reducir la probabilidad.
6. Monitoreo del Riesgo
Documentos RUP
1. Plan de Gestión de Riesgos
- Las primeras iteraciones son para los riesgos más peligrosos.
===
Reflexiones
- Ojo, las herramientas case pueden terminar desplazando el rol del desarrollador!
- A veces las factorías usan un estándar de nombres de pbl o de base de datos, que no son intuitivos para forzar al cliente a llamarlos.
- En actas de reunión van nombres, en documentos de preferencia van cargos, roles, puestos...
- Debemos tener el modelo de negocio y casos de uso de nuestros sistemas (mem y lyl)
- Licencias? Por confirmar: si un programador (de servicios por honorarios) hace una parte de los sistemas, esto puede salvar a la empresa (factoring)... hecha la ley...
- El usuario no debe llamar al programador, sino al jefe de proyecto. Esto produce retrasos de desarrollo, además es un desorden de control de cambios.
- Lyl: donde poner el servidor?
- Para UML se puede usar StarUML, Poseidon, Eclipse
- No hay una aplicación donde subir los artefactos del ciclo de un desarrollo... hay q hacerla!
- Lyl: Cómo son los riesgos? Cómo serían los backup?
- Lyl si somos los que entendemos el negocio de OGA... cómo lo difundimos? como mantenemos esta ventaja?
- Siempre verificar las vacaciones de los usuarios que apoyan al equipo. A veces se puede aplazar las vacaciones del personal por el bien del proyecto, a veces debemos cambiar el cronograma. Si somos un factoring, debemos poner en acta que si alguien no está no se mueven las fechas y la conformidad la da alguien más.
- Las reuniones de avance de trabajo deben tener agenda y una de dos: lunes por la mañana o viernes por la mañana.
viernes, 22 de julio de 2011
El Proceso Unificado, RUP
2. Mejores Prácticas
Modelamiento
Se recomienda usar Enterprise Arquiteck,
Calidad
Con la calidad no se juega
Testing: Reparar un software después de implementado cuesta más del doble.
"Nunca lo pruebe el mismo que lo programó"
- El sistema debe hacer lo que el usuario quería
- Debe hacerlo bien
Control de cambios
Documentar el requerimiento de cambio del sistema. Usar el formato. Se aclara la comunicación.
Existen formatos. Inclusive si hay una ley que exige el cambio.
Control de cambios de versiones
.. hay otras, chequear ppt
3. Elementos
Parentesis sobre los roles:
Los analistas y arquitecto de software deben documentar, pero el desarrollador no documenta. Todo llega listo para el programador... a este paso el rol del desarrollador será cubierto por una aplicación.
Las factorías de Software deberían tener obligatoriamente un sistema de levantamiento de requerimientos (Requisi Pro, super caro)
Roles
Características q debe tener una persona, define el comportamiento que debe tener una persona para cumplir ciertas tareas del proyecto.
Sombrero que usa una persona para tener varias posiciones en el proyecto
Un desarrollador debe saber de todas maneras: Word, Excel, Project.
Tareas
Categorías de tareas:
La tarea principal del Proyecto es la Especificación de los Casos de uso
Artefactos
El Documento Visión es uno de los principales artefactos
Fases
Todas las fases tienen un WorkFlow
Los analistas y arquitecto de software deben documentar, pero el desarrollador no documenta. Todo llega listo para el programador... a este paso el rol del desarrollador será cubierto por una aplicación.
Las factorías de Software deberían tener obligatoriamente un sistema de levantamiento de requerimientos (Requisi Pro, super caro)
Roles
Características q debe tener una persona, define el comportamiento que debe tener una persona para cumplir ciertas tareas del proyecto.
Sombrero que usa una persona para tener varias posiciones en el proyecto
Un desarrollador debe saber de todas maneras: Word, Excel, Project.
Tareas
Categorías de tareas:
- Thinking Steps
- Performing Steps
- Reviewing Steps
La tarea principal del Proyecto es la Especificación de los Casos de uso
Artefactos
El Documento Visión es uno de los principales artefactos
Fases
Todas las fases tienen un WorkFlow
Etiquetas:
Calidad,
Control de Cambios,
Desarrollo,
Modelamiento,
RUP
Suscribirse a:
Entradas (Atom)






