SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
José Antonio Estevan
Extensiones, y que la
fuerza nos acompañe.
About the Speaker
•José Antonio Estevan
•jaestevan.com
•@jaestevan
Premier Field Engineer @ Microsoft
+14 Years Dynamics AX Experience
Former MVP
Proud geek
Extensiones, y que la fuerza nos
acompañe
1
2
3
4
¿Qué son?
La fuerza
¿Por qué son necesarias?
Poderoso el lado oscuro es
¿Cómo pensar en extensiones?
Aprender a usar la fuerza, tu debes…
¿Y a partir de ahora?
Que la fuerza nos acompañe
¿Qué son?
ArtefactoEnAOT
-Atributo 1: EDT
+ Metodo 1()
-Atributo 2: EDT
ArtefactoEnAOT
-Atributo 1: EDT
+ Metodo 1 modif()
+ Metodo 2 nuevo()
-Atributo 2: Mi valor
• Overlay: El lado oscuro
¿Qué son?
ArtefactoEnAOT
-Atributo 1: EDT
+ Metodo 1()
-Atributo 2: EDT
ArtefactoM1_Extension
-Atributo 2: Mi valor
ArtefactoM2_Extension
+ Metodo 1 modif()
+ Metodo 2 nuevo()
Extends
Augments
• Extensiones: La fuerza
¿Por qué extensiones?
‘Overlay’ no
permitido
Menor coste de
propiedad
Aumento de la
calidad
Soporte para
actualización continua
Every customer on latest release; always.
Personalizaciones no intrusivas
No cambiar la
definición de tipos
Cambiar firma de métodos
Cambiar restricciones en tablas
(incluyendo índices)
No romper la
encapsulación
Cambiar modificadores de
acceso a métodos
(public – private – protected)
Solo cambios de
naturaleza aditiva
NO OVER-LAYERING
Cambios que no cumplan el
Principio de Liskov
Permitir el principio
Abierto/Cerrado
Los objetos (clases, módulos, métodos)
deben ser abiertos a extensión y
cerrados para modificación
Personalizaciones no intrusivas
Clases de extensión (+CoC)
Subscripción a eventos y delegados
Extensiones por metadatos
SysExtension y otros frameworks
https://blogs.msdn.microsoft.com/axinthefield/embrace-the-extensions-mindset-with-dynamics-365-for-finance-and-operations/
¡¿Solo eso?!
• Se puede cambiar el texto que ven los usuarios (aka. Labels).
• Se pueden extender enums (los que son extensibles)
• Se pueden añadir campos, relaciones, índices y métodos a tablas.
• Se pueden añadir controles, datasources y métodos a formularios.
• Se pueden añadir métodos y estado (atributos) a clases.
• Se pueden ”envolver” (wrap) métodos protected y public en clases para inyectar
código personalizado en la ejecución (Chain-of-Command).
• Se pueden subscribir eventos personalizados y del sistema utilizando sólo
atributos. (Sí, tenemos una patente sobre esto).
• Se puede responder a delegados de forma segura, incluso con varios suscriptores
(hay que ser un “buen ciudadano”).
• Se pueden crear factorías de clases con SysExtension framework.
https://blogs.msdn.microsoft.com/mfp/2018/03/29/x-the-most-extensible-language-on-the-planet-2/
Chain of Command (CoC)
• Permite que los métodos sean ‘envueltos’ (wrapped) en
clases de extensión.
• Estos métodos deben incluir una llamada al método next, que
ejecuta el código original o la siguiente llamada en la ‘cadena’
• Permite acceder a métodos y miembros public y protected
de la clase original (a su estado).
• Se pueden ‘envolver’ varios métodos en una misma clase de
extensión para crear una funcionalidad compleja coherente.
• Beneficios:
• Permite habilitar muchos casos de extensibilidad con un mínimo refactor
• Permite habilitar una gran cantidad de casos reportados por partners
• El código resultante es más fácil de crear y entender
• Permite múltiples extensiones y partners sin colisión
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/extensibility/method-wrapping-coc
Chain of Command (CoC)
Requerimientos:
a) Cambiar el valor devuelto por calcAmount()
b) Insertar lo que hace post() en un log, en la misma transacción.
Non-developer extensions
• Embed Power Apps
• User-defined fields
• Permiten añadir datos y
elementos de la interfaz
de forma no intrusiva y
sin código
https://docs.microsoft.com/es-es/dynamics365/unified-operations/fin-and-ops/get-started/user-defined-fields
https://docs.microsoft.com/es-es/dynamics365/unified-operations/fin-and-ops/get-started/embed-power-apps
Alternativas
• Refactorizar el código para evitar cambios
intrusivos utilizando extensiones.
• Trabajar con los equipos de Microsoft en el
análisis de nuevas posibilidades de extensión
(Extensibility Requests o programas para ISV)
• Aceptar que tu solución/implementación no
es viable para Dynamics 365 for Finance and
Operations
¿Cuál es era el plan?
Kernel / Platform
App Platform
App Foundation
Hard seal
Hard seal
Nov 2016 – 7.1
Hard seal
Jun 2017 – 7.3
Hard seal
Apr 2018 – 8.0
Extension based
customizations only!
Hard seal
Nov 2016 – 7.1
Hard seal
Hard seal
Nov 2016 – 7.1
Hard seal
Jun 2017 – 7.3
Hard seal
Nov 2016 – 7.1
Hard seal
Dec 2017 – 7.2
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/migration-upgrade/versions-update-policy
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/extensibility/extensibility-roadmap
¡¿Y ahora qué?!
Disfruta de una experiencia sin costosas actualizaciones, siempre
aprovechando los avances de la última versión.
Customers
Eliminar todo overlay evitando modificaciones intrusivas
mediante las opciones de extensión que hemos visto.
VARs
Eliminar todo overlay de sus soluciones para hacerlas
extensibles por clientes y VARs y permitir una fácil instalación.
ISVs
Facilitar opciones de extensión no intrusivas mediante nuevas
funcionalidades en la plataforma y la adaptación del código
de la aplicación.
Microsoft
https://docs.microsoft.com/es-es/dynamics365/unified-operations/dev-itpro/extensibility/extensib
Resumen
• Entender los beneficios del modelo de
personalización basado en extensiones.
• Comprender las posibilidades de extensión no
intrusivas del producto.
• Aprender nuevos patrones para refactorizar código
de ‘overlay’ a extensiones.
Every customer on
latest release; always.
¡Muchas gracias!
Dynamics 365 Community
The Dynamics 365 Community is a site where you can find community contributions, ask questions and
interact with Microsoft Dynamics peers and experts. The community has over 200K members and is
growing.
New UI/UX: https://community.dynamics365.com

Más contenido relacionado

Similar a Extensiones, y que la fuerza nos acompañe - Microsoft Dynamics 365 for Finance and Operations

03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intixRoger CARHUATOCTO
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareJavier Muñoz
 
Is.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación ExtremaIs.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación Extremaperaltag
 
Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017Eduardo Diaz
 
Planes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíAPlanes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíALUISVALENZUELA
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptrogergrefa1
 
Mda Para Dummies
Mda Para DummiesMda Para Dummies
Mda Para Dummiessolnatec
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoLuciano Moreira da Cruz
 
Presentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptxPresentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptxAderMogollonLuna
 
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...DQSconsulting
 
Activica - Soluciones de Software
Activica - Soluciones de SoftwareActivica - Soluciones de Software
Activica - Soluciones de SoftwareActivica
 
Asegúr@IT IV - Microsoft y Seguridad
Asegúr@IT IV - Microsoft y SeguridadAsegúr@IT IV - Microsoft y Seguridad
Asegúr@IT IV - Microsoft y SeguridadChema Alonso
 

Similar a Extensiones, y que la fuerza nos acompañe - Microsoft Dynamics 365 for Finance and Operations (20)

LAIT602_AI_AVILA_ARTURO.pptx
LAIT602_AI_AVILA_ARTURO.pptxLAIT602_AI_AVILA_ARTURO.pptx
LAIT602_AI_AVILA_ARTURO.pptx
 
Emprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software LibreEmprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software Libre
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix
 
Nexus y la Deuda Tecnica
Nexus y la Deuda TecnicaNexus y la Deuda Tecnica
Nexus y la Deuda Tecnica
 
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del SoftwareMOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
MOSKitt: Herramienta de Modelado UML y Soporte a la Ingeniería del Software
 
Is.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación ExtremaIs.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación Extrema
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Cómo gestionar el ciclo de vida de soluciones SPFx
Cómo gestionar el ciclo de vida de soluciones SPFxCómo gestionar el ciclo de vida de soluciones SPFx
Cómo gestionar el ciclo de vida de soluciones SPFx
 
Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017
 
Planes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíAPlanes De Entrenamiento En TecnologíA
Planes De Entrenamiento En TecnologíA
 
Clase 4, 29/8/2007
Clase 4, 29/8/2007Clase 4, 29/8/2007
Clase 4, 29/8/2007
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.ppt
 
diferencias entre versiones de sencha ext js
diferencias entre versiones de sencha ext jsdiferencias entre versiones de sencha ext js
diferencias entre versiones de sencha ext js
 
Mda Para Dummies
Mda Para DummiesMda Para Dummies
Mda Para Dummies
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivo
 
Presentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptxPresentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptx
 
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...
Por qué migrar tu ERP actual a Dynamics 365 Finance y Supply Chain … y si ya ...
 
Activica - Soluciones de Software
Activica - Soluciones de SoftwareActivica - Soluciones de Software
Activica - Soluciones de Software
 
Asegúr@IT IV - Microsoft y Seguridad
Asegúr@IT IV - Microsoft y SeguridadAsegúr@IT IV - Microsoft y Seguridad
Asegúr@IT IV - Microsoft y Seguridad
 

Extensiones, y que la fuerza nos acompañe - Microsoft Dynamics 365 for Finance and Operations

  • 1. José Antonio Estevan Extensiones, y que la fuerza nos acompañe.
  • 2.
  • 3. About the Speaker •José Antonio Estevan •jaestevan.com •@jaestevan Premier Field Engineer @ Microsoft +14 Years Dynamics AX Experience Former MVP Proud geek
  • 4. Extensiones, y que la fuerza nos acompañe 1 2 3 4 ¿Qué son? La fuerza ¿Por qué son necesarias? Poderoso el lado oscuro es ¿Cómo pensar en extensiones? Aprender a usar la fuerza, tu debes… ¿Y a partir de ahora? Que la fuerza nos acompañe
  • 5. ¿Qué son? ArtefactoEnAOT -Atributo 1: EDT + Metodo 1() -Atributo 2: EDT ArtefactoEnAOT -Atributo 1: EDT + Metodo 1 modif() + Metodo 2 nuevo() -Atributo 2: Mi valor • Overlay: El lado oscuro
  • 6. ¿Qué son? ArtefactoEnAOT -Atributo 1: EDT + Metodo 1() -Atributo 2: EDT ArtefactoM1_Extension -Atributo 2: Mi valor ArtefactoM2_Extension + Metodo 1 modif() + Metodo 2 nuevo() Extends Augments • Extensiones: La fuerza
  • 7.
  • 8.
  • 9. ¿Por qué extensiones? ‘Overlay’ no permitido Menor coste de propiedad Aumento de la calidad Soporte para actualización continua Every customer on latest release; always.
  • 10. Personalizaciones no intrusivas No cambiar la definición de tipos Cambiar firma de métodos Cambiar restricciones en tablas (incluyendo índices) No romper la encapsulación Cambiar modificadores de acceso a métodos (public – private – protected) Solo cambios de naturaleza aditiva NO OVER-LAYERING Cambios que no cumplan el Principio de Liskov Permitir el principio Abierto/Cerrado Los objetos (clases, módulos, métodos) deben ser abiertos a extensión y cerrados para modificación
  • 11. Personalizaciones no intrusivas Clases de extensión (+CoC) Subscripción a eventos y delegados Extensiones por metadatos SysExtension y otros frameworks https://blogs.msdn.microsoft.com/axinthefield/embrace-the-extensions-mindset-with-dynamics-365-for-finance-and-operations/
  • 12. ¡¿Solo eso?! • Se puede cambiar el texto que ven los usuarios (aka. Labels). • Se pueden extender enums (los que son extensibles) • Se pueden añadir campos, relaciones, índices y métodos a tablas. • Se pueden añadir controles, datasources y métodos a formularios. • Se pueden añadir métodos y estado (atributos) a clases. • Se pueden ”envolver” (wrap) métodos protected y public en clases para inyectar código personalizado en la ejecución (Chain-of-Command). • Se pueden subscribir eventos personalizados y del sistema utilizando sólo atributos. (Sí, tenemos una patente sobre esto). • Se puede responder a delegados de forma segura, incluso con varios suscriptores (hay que ser un “buen ciudadano”). • Se pueden crear factorías de clases con SysExtension framework. https://blogs.msdn.microsoft.com/mfp/2018/03/29/x-the-most-extensible-language-on-the-planet-2/
  • 13. Chain of Command (CoC) • Permite que los métodos sean ‘envueltos’ (wrapped) en clases de extensión. • Estos métodos deben incluir una llamada al método next, que ejecuta el código original o la siguiente llamada en la ‘cadena’ • Permite acceder a métodos y miembros public y protected de la clase original (a su estado). • Se pueden ‘envolver’ varios métodos en una misma clase de extensión para crear una funcionalidad compleja coherente. • Beneficios: • Permite habilitar muchos casos de extensibilidad con un mínimo refactor • Permite habilitar una gran cantidad de casos reportados por partners • El código resultante es más fácil de crear y entender • Permite múltiples extensiones y partners sin colisión https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/extensibility/method-wrapping-coc
  • 14. Chain of Command (CoC) Requerimientos: a) Cambiar el valor devuelto por calcAmount() b) Insertar lo que hace post() en un log, en la misma transacción.
  • 15. Non-developer extensions • Embed Power Apps • User-defined fields • Permiten añadir datos y elementos de la interfaz de forma no intrusiva y sin código https://docs.microsoft.com/es-es/dynamics365/unified-operations/fin-and-ops/get-started/user-defined-fields https://docs.microsoft.com/es-es/dynamics365/unified-operations/fin-and-ops/get-started/embed-power-apps
  • 16. Alternativas • Refactorizar el código para evitar cambios intrusivos utilizando extensiones. • Trabajar con los equipos de Microsoft en el análisis de nuevas posibilidades de extensión (Extensibility Requests o programas para ISV) • Aceptar que tu solución/implementación no es viable para Dynamics 365 for Finance and Operations
  • 17. ¿Cuál es era el plan? Kernel / Platform App Platform App Foundation Hard seal Hard seal Nov 2016 – 7.1 Hard seal Jun 2017 – 7.3 Hard seal Apr 2018 – 8.0 Extension based customizations only! Hard seal Nov 2016 – 7.1 Hard seal Hard seal Nov 2016 – 7.1 Hard seal Jun 2017 – 7.3 Hard seal Nov 2016 – 7.1 Hard seal Dec 2017 – 7.2 https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/migration-upgrade/versions-update-policy https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/extensibility/extensibility-roadmap
  • 18. ¡¿Y ahora qué?! Disfruta de una experiencia sin costosas actualizaciones, siempre aprovechando los avances de la última versión. Customers Eliminar todo overlay evitando modificaciones intrusivas mediante las opciones de extensión que hemos visto. VARs Eliminar todo overlay de sus soluciones para hacerlas extensibles por clientes y VARs y permitir una fácil instalación. ISVs Facilitar opciones de extensión no intrusivas mediante nuevas funcionalidades en la plataforma y la adaptación del código de la aplicación. Microsoft
  • 19.
  • 21. Resumen • Entender los beneficios del modelo de personalización basado en extensiones. • Comprender las posibilidades de extensión no intrusivas del producto. • Aprender nuevos patrones para refactorizar código de ‘overlay’ a extensiones. Every customer on latest release; always.
  • 23. Dynamics 365 Community The Dynamics 365 Community is a site where you can find community contributions, ask questions and interact with Microsoft Dynamics peers and experts. The community has over 200K members and is growing. New UI/UX: https://community.dynamics365.com