Autor: ochoscar (Página 2 de 7)

Manejo de Excepciones en Java

El manejo de excepciones es un punto muy importante de cualquier programa, en esta página se explica todo lo concerniente a Manejo de Excepciones en Java, sintaxis y principales usos.

Si quieres saber más sobre la historia y funcionamiento de Java visita este link.

1. Generalidades del Manejo de Excepciones en Java

En general un programa puede fallar por diversas razones, por ejemplo un error de código, un recurso no disponible o un valor de una entrada incorrecto. Y aunque existen muchas otras razones para que se produzcan fallos, es muy importante al momento de programar tener en cuenta estos posibles errores y tratarlos.

Una excepción es la forma de decir que algo no funcionó como se esperaba, aquí es bueno considerar que la forma tradicional de manejar estos casos ha sido con códigos de error, sin embargo un programa profesional debería tener un manejo robusto de errores, lo cual implica en Java, la definición de diferentes clases que puedan representar errores y el manejo apropiado de los mismos.

2. Árbol de Excepciones, Excepciones verificadas y no verificadas

En Java no tenemos que empezar desde cero a escribir las excepciones, ya existen una gran cantidad de clases que las pueden representar. En la figura 1, se muestran la jerarquía de estas excepciones.

ExcepcionesJava
Figura 1. Excepciones en Java

Esta imagen muestra las principales clases para manejar excepciones todas ellas pertenecientes al paquete java.lang.

Las excepciones Error y RuntimeException y las que derivan de ellas vía herencia, se llaman excepciones no verificadas, con lo cual cuando un método lanza estas excepciones no es necesario realizar el proceso de captura como se explicará más adelante. En el caso de las excepciones no verificadas estas aparecerán en tiempo de ejecución causando la terminación del programa de forma abrupta sino fueron debidamente capturadas.

Las Excepciones referidas como Excpetion y derivadas de esta clase deben ser capturadas de forma obligatoria o el compilador arrojará un mensaje de error.

Como nota adicional, las excepciones siempre terminan en la palabra Exception, esto es más una convención que algo obligatorio, pero es bueno seguirla pues es la costumbre entre los desarrolladores de Java.

3. Lanzando y capturando Excepciones

Para lanzar una excepción basta que un método propio del entorno de Java o de una librería lo lance o también se puede realizar un lanzamiento manual a través de la palabra reservada throw, que requerirá una instancia de la clase de Excepción que se va a lanzar.

throw new Exception("Error detail");

Para capturar una Excepción basta con ejecutar el código que puede lanzar una excepción usando la estructura de control try – catch, que en general se muestra en la siguiente fragmento de código.

try {
    // Código susceptible de error
} catch(TipoExcepcion_1 ex1) {
    // Procesamiento del error
} catch(TipoExcepcion_2 ex2) {
    // Procesamiento del error
} catch(TipoExcepcion_n exn) {
    // Procesamiento del error
} finally {
    // Procesamiento obligatorio
}

En la sección try, se empezará a ejecutar el código, tan pronto se lance una excepción se dejará de ejecutar código y se continuará con la verificación de las cláusulas catch.

Los bloques catch atraparan la primera excepción que coincida con el error lanzado en la sección try. El orden de los catch es importante porque solo se procesará el primero. Además es conveniente indicar que la sección finally siempre se ejecutará, esta normalmente es reservada para liberar recursos.

Es frecuente encontrar que en los bloques catch o finally se vuelvan a lanzar excepciones en caso que el bloque o el punto donde se encuentra el código no sea capaz de manejarlo, a esto se le conoce como lanzamiento de segundas excepciones.

4. Manejo de Excepciones en los métodos

Cuando creamos un método en Java es posible que el mismo no tenga la capacidad o la suficiente información como para manejar alguna excepción en este caso es posible indicar en la firma del método, las excepciones que no se manejan allí y que puede eventualmente lanzar. En estos casos, la parte del código que llama a estos métodos deberá capturarlos con estructuras try – catch o a su vez volverlos a indicar que no puede manejar las excepciones. Estos e puede repetir, método tras método hasta que alguno de ellos maneje la excepción o hasta que se llegue al punto de entrada del programa, es decir al main.

ReturnType name(parameters) throws ClassException1, ClassException2 {
}

Note lo siguiente:

  • Al método main se le puede agregar la clausula throws
  • No es lo mismo throw para lanzar excepciones, que throws para indicar que un método puede lanzar esas Excepciones.
  • La cláusula throws puede tener varias clases de Excepción separadas por coma.
  • Las cláusulas throws pueden servir para diferenciar métodos con los mismos nombres, por lo cual, estas excepciones sirven para sobrecargar los métodos.

5. Excepciones personalizadas

El programador puede crear sus propias clases de Excepción para representar situaciones que deban ser controladas según el dominio del software en cuestión. Para hacer esto basta con heredar de alguno de las clases típicas de Excepción, mostrada en la Figura 1. Normalmente será heredado de Exception.

Adicionalmente, es común que se provea un mensaje explicativo de la Excepción redefiniendo el contenido del atributo message en la clase Exception.

6. Try – Catch con recursos

En programación es muy habitual que se manejen recursos, como archivos, páginas web y conexiones a bases de datos, todos estos siguen una regla general y es que cualquier recurso que se abra debe cerrarse, en caso de no hacerlo se corren grandes riegos de problemas debido agotar recursos, concurrencia y en general efectos indeseados difíciles de detectar.

Debido a lo habitual que es que los programadores olviden cerrar los recursos existe una variante de la estructura try – catch llamada try – catch with resources, que cierra automáticamente estos recursos por el programador.

La forma de definirlo es muy similar simplemente se debe declarar aquellos recursos que se puedan cerrar en los paréntesis del try tal como se muestra en el código 4.

try (FileReader fr = new FileReader(path);
    BufferedReader br = new BufferedReader(fr)) {
    return br.readLine();
}

Para que los recursos puedan ser utilizados entre los paréntesis deben haber implementado la interface AutoCloseable o Closeable y al final de del try se ejecutaran los métodos close de los respectivos recursos.

7. Artículos de Interés

Componentes Vuetify en VUE JS

Esta sección detalla la instalación y uso de un framework de Componentes gráficos llamado Vuetify aplicado en VUE JS el cual nos permitirá diseñar nuestras aplicaciones Web de forma más ágil teniendo presente componentes prediseñados.

Para aprender a programar en Java sigue este link

En la página principal de vuetify se encuenta toda la documentación de todos los componentes y las diferentes propiedades que se requieren para hacer diseños.

Página principal de Vuetify

1. Instalación y configuración

Instalar Vuetify dentro de nuestro proyecto VUE JS es bastante sencillo, solamente debes incluirlo aprovechando que ya tenemos el comando de la consola o CLI de VUE, para hacerlo utiliza el siguiente comando.

vue add vuetify

Una vez instalado vuetify se reemplazará el archivo App.vue y HelloWorld.vue el cual contendrá ahora archivos que estan basados en vuetify. Adicionalmente cuando se instaló vuetify se creó un archivo con la configuración donde se pueden encontrar algunas propiedades generales y los nombres de los colores que se utilizarán en la aplicación. El siguiente código muestra un extracto de este archivo llamado vuetify.js el cual está ubicado en la carpeta plugins.

import Vue from 'vue';
import Vuetify from 'vuetify/lib/framework';

Vue.use(Vuetify);

export default new Vuetify({
  theme: {
      options: {
        customProperties: true,
      },
    themes: {
      light: {
        primary: '#007BFF',
        secondary: '#424242',
        accent: '#82B1FF',
        error: '#FF5252',
        info: '#2196F3',
        success: '#4CAF50',
        warning: '#FFC107'
      },
    },
  },
  icons: {
    iconfont: 'md',
  },
});

En el caso de los iconos podemos utilizar diferentes fuentes como md para Material Design o Font Awesome. En la web de vuetify se encuentran los detalles para instalar diferentes fuentes de iconos.

Instalar fuentes de iconos

2. Primeros pasos con Vuetify

En Vuetify tenemos muchos componentes y diferentes formas de aplicar estilos y maquetar nuestra aplicación en el fronted, para iniciar es importante saber que todos los componentes de vuetify comienzan con <v->. En el siguiente código se hará uso de los v-toolbar, v-toolbar-title y v-content para establecer una maquetación inicial básica de nuestra aplicación.

<template>
  <v-app>
    <v-app-bar color="primary" dark app>
        <span>{{ titulo }}</span>
    </v-app-bar>

    <v-content>
      <home />
    </v-content>
  </v-app>
</template>

<script>
import Home from '@/views/Home.vue'

export default {
  name: 'App',
  component: { Home },
  data: () => ({
    titulo: "Demo App"
  }),
};
</script>

Aquí es importante observar que el uso de la etiqueta dark permite poner el color de texto en blanco para que resalte según el color primario que estemos utilizando.

3. Maquetación

En vuetify se recomiendo seguir la siguiente jerarquia de contendores:

  • v-container: sirve para hacer la distribución de la pantalla en general.
  • v-layout: sirve para hacer alineaciones tanto de forma horizontal como vertical.
  • v-flex: que permite seleccionar las partes de la pantalla a utilizar.

En el siguiente ejemplo se muestra el uso de estos contenedores para la maquetación. Los atributos fluid y fill-height permiten que el contenedor se centre horizontalmente y que ocupe todo el alto de la página respectivamente, de forma similar aplican las opciones de layout justify-center align-center.

En cuanto a las opciones de flex, por defecto divide la pantalla en 12 casillas y podemos usar particiones entre 1 y 12 para determinar qué espacio ocupará nuestro componente. Adicional a lo anterior, existen los breakpoint que son tamaños preconfigurados: xs, sm, md, lg, xl que corresponden a tamaños de pantallas.

<template>
  <v-app>
    <v-app-bar color="primary" dark app>
        <span>{{ titulo }}</span>
    </v-app-bar>
    
    <v-main>
      <v-container>
        <create-user></create-user>
      </v-container>
    </v-main>
  </v-app>
</template>

<script>
  import CreateUser from './components/CreateUser.vue'
  
  export default {
    name: 'App',
    components: { CreateUser },
    data: () => ({
      titulo: "Demo App"
    }),
  };
</script>
<template>
  <v-layout
    justify-center
    align-center
  >
    <v-flex xs4>
      <v-card class="elevation-12">
        <v-toolbar color="primary" dark card>
          <v-toolbar-title>
            Sign Up
          </v-toolbar-title>
        </v-toolbar>
        <v-card-text>
          <v-text-field label="mail"></v-text-field>
          <v-text-field
            label="password"
            type="password"
          ></v-text-field>
        </v-card-text>
      </v-card>
    </v-flex>
  </v-layout>
</template>

La figura 1 muestra este ejemplo ejecutandose.

Vuetify Intro
Figura 1. Ejecución básica de Vuetify

4. Helpers

En vuetify existen diferentes ayudantes de clases que permiten realizar tareas comunes como especificar los márgenes o los padding a través de clases. Por ejemplo, si se desea hacer un margin en todos los bordes de 2 pixeles se puede usar la clase ma-2. En los siguiente link se proporciona un acceso a los helpers más comunes.

Espaciado de vuetify

Elevation

Tamaños de componentes y responsive

Fuentes para incorporar en nuestra aplicación

5. Propiedades útiles

Algunas propiedades (props) útiles son las siguientes:

  • column: aplicable a un layout indica que el layout ocupa una columna, por defecto los layout tienen la propiedad row establecida a true. Esto nos sirve para ubicar el contenido completo de un layout de forma que ocupe todo el ancho de la página.
  • wrap: aplicada a un layout permite que los componentes dentro del layout se acomoden en columnas cuando el contenido ya no quepa en una sola fila.
  • text-xs-center: alinea el texto al centro para la resolución más pequeña que sería la pantalla de un celular.
  • text-shadow: aplicable a los estilos CSS permite especificar sombras que dan estilo a los textos.

6. Artículos de Interés

Slot y Componentes dinámicos en VUE

Es común requerir que nuestra SPA (Single Page Application) requiera destinar espacios para ser llenados de forma dinámica o dependiendo de alguna condición lógica, para ello podemos usar los Slot y Componentes dinámicos en VUE que ayudan a construir nuestra página web de forma ordenada.

Para aprender backend en Java siga este vínculo

1. Uso de Slot y llenado de espacios en VUE

Los slot permiten definir espacios en nuestros componentes que serán especificados como se llenarán desde el componente padre que utilice importe el componente hijo, de esta forma el padre puede indicar como llenar un espacio HTML al hijo dando gran versatilidad ya que el mismo componente puede tener un espacio que es llenado de forma diferente en función del padre donde se encuentre importado.

Crear un slot es algo muy simple y consta de dos pasos, el primero es definir en el componente hijo la zona HTML que dedicaremos para que quien use el componente lo defina. Esto se muestra en el siguiente código.

<template>
    <div>
      <transition name="efecto" mode="out-in">
        <div id="nav" class="tarjeta" :key="indice">
          <span :key="indice" > {{ datos[indice] }} </span>
        </div>
      </transition>
      <div>
        <slot name="slot1"></slot>
      </div>
    </div>
  </template>

El segundo paso consiste en especificar la sección HTML que llenará el slot en el lugar donde se use este componente hijo. El siguiente código muestra un ejemplo de esta especificación. Observe que el nombre del slot en este caso se usa sin comillas.

<template>
  <div id="nav" class="principal">
    <span>App </span>
    <span>{{ login }}</span>
    <br/>
    <span>Age {{ age }}</span>
    <tarjeta-datos>
      <template v-slot:slot1>
        <span>Componente en Slot</span>
      </template>
    </tarjeta-datos>
  </div>
</template>

2. Manejo de Componentes dinámicos en VUE

Para especificar un componente dinámico en VUE es suficiente con utilizar la etiqueta component y especificar en su atributo is cuál será el componente que se utilizará, esto resulta equivalente a dejar el componente fijo en el código pero con la ventaja que podemos utilizar una variable de la data para establecer el valor del componente y lograr que este cambie en función del valor de la variable.

En el ejemplo siguiente vemos como la variable actual, recibe el valor del nombre del componente, tenga presente que de cualquier manera el nombre del componente debe ser el mismo que se vaya a utilizar en el HTML y que debe ser previamente importado y definido en la sección components de la instancia de VUE.

<component :is="actual"></component>
import TarjetaDatos from './components/TarjetaDatos.vue';

export default {
  components: { TarjetaDatos },
  name: 'App',
  data() {
    return {
      login: 'ochoscar',
      firstname: 'ochoscar',
      lastname: 'ochoscar',
      birthday: new Date(1984, 2, 3),
      actual: 'tarjeta-datos'
    }
  },

3. Artículos de Interés

Animaciones usando keyframes CSS

Cuando programamos en el front indiscutiblemente es necesario aprender a generar animaciones que mejoren la experiencia del usuario, en la sección de transiciones vimos como podemos manejar efectos para la aparición de elementos, estas transiciones se complementan muy bien cuando utilizamos Animaciones usando Keyframes CSS que permitiran una flexibilidad completa en nuestra animación

Para aprender backend en Java siga este vínculo

1. Definición de estilos de animación keyframes CSS

Lo primero antes de construir nuestras Animaciones es definir las keyframes CSS, lo cual es muy simple, tan solo con utilizar la etiqueta @keyframes indicar un nombre y definir los estados inicial y final de nuestra animación, tal como se muestra en el código de la siguiente sección.

@keyframes efecto-in {
  from {
    transform: scaleY(0);
  }
  to {
    transform: scaleY(1);
  }
}

@keyframes efecto-out {
  from {
    transform: scaleY(1);
  }
  to {
    transform: scaleY(0);
  }
}

Aquí es importante notar que existen muchas transformaciones y que la que se ha escogido en este ejemplo recibe un valor de 1 o 0 equivalente a 100% o 0%.

2. Agregado de Animaciones usando keyframes CSS a las transiciones

Para que nuestros @keyframes se puedan usar como animaciones es necesario asociarlos a las transiciones de forma muy similar a como se definió la propia transición.

.efecto-enter {
  opacity: 0;
}

.efecto-enter-active {
  transition: opacity 1s ease-out;
  animation: efecto-in 0.4s ease-out forwards;
}

.efecto-leave-active {
  transition: opacity 0.5s ease-out;
  animation: efecto-out 0.2s ease-out forwards;
  opacity: 0;
}

Note que la transición de salida leave-active debe especificar en este caso el valor de la propiedad opacity. Adicionalmente que la animación estar repetida en bucles infinitos y para evitarlo se hace uso de la directiva forwards.

Finalmente, a nivel del HTML se da un cambio pequeño en el cual podamos animar por completo el div que contiene la información, a su vez este div ( o el elemento sobre el que recaiga la animación debe tener un id para poder aplicarlo.

<transition name="efecto" mode="out-in">
  <div id="nav" class="tarjeta" :key="indice">
    <span :key="indice" > {{ datos[indice] }} </span>
  </div>
</transition>

3. Especificación de propiedades según avance de animación

Un último punto útil cuando hacemos animaciones usando @keyframes CSS es que podemos especificar diferentes valores del avance de la animación, cuando hemos usado from y to estos se entienden como 0% y 100% respectivamente, pero podemos especificarlo explicitamente y así indicar un valor de avance de la transformación a medida que la animación ocurre.

En el siguiente ejemplo se exagera un poco la transformación en Y justo antes que llegue que termine la animación.

@keyframes efecto-in {
  0% {
    transform: scaleY(0);
  }
  70% {
    transform: scaleY(1.4);
  }
  100% {
    transform: scaleY(1);
  }
}

@keyframes efecto-out {
  from {
    transform: scaleY(1);
  }
  to {
    transform: scaleY(0);
  }
}

Estéticamente, estas animaciones exageradas deben usarse con cuidado en sitios específicos y aplicarlas una sola vez para que no cansen al usuario y su experiencia no se vea impactada.

4. Artículos de Interés

Transiciones y animaciones en VUE

A continuación se explican como se puede lograr las Transiciones y Animaciones en VUE a fin que nuestra página o aplicación sea más reactiva y nos permita interactuar con el usuario mejorando su experiencia.

Para aprender backend en Java siga este vínculo

1. Transiciones y animaciones en VUE

Las transiciones y animaciones permiten definir como un componente aparece en pantalla o como desaparee, también se puede programar esta animación cuando el componente se actualiza según el ciclo de vida de los componentes en VUE.

TransicionesVUE
Figura 1. Estados de las animaciones en VUE

La figura 1, muestra el esquema general de lo que sucede cuando se actualiza un componente en el cual se aprecia que el componente pasa de un estado enter a un estado stay este último es en el que permanece mientras no se actualiza el componente, finalmente cuando se actualiza pasa a un estado Leave.

Para que nuestras Transiciones y animaciones en VUE queden estéticamente agradables es importante que la animación comience lento y luego se acelere y luego termine lento, lo anterior se aprecia en la curva que une los estados en la figura 1.

2. Programando los estilos de transiciones

Para programar las Transiciones y animaciones en VUE es necesario crear cuatro estilos que controlaran los diferentes estados y transiciones descritos en la figura 1 y los cuales se pueden apreciar en CSS en el código siguiente.

Estos estilos llevaran un nombre inicial y terminaran con el nombre del estado o transición correspondiente, este nombre inicial es importante porque con el nos referiremos en la sección HTML.

    .efecto-enter {
      opacity: 0;
    }

    .efecto-enter-active {
      transition: opacity 1s ease-out;
    }

    .efecto-leave-active {
      transition: opacity 0.5s ease-out;
      opacity: 0;
    }

    .efecto-leave {
    }

Los estilos inician con una propiedad (o varias) que serán modificadas, note que el el efecto efecto-enter-active no especifica un valor final de la propiedad opacity con lo cual se entiende que este valor será el valor por defecto 1, cosa contraria en el siguiente estilo efecto-leave-active en el cual si se especifica el valor final de la propiedad

3. Aplicando los estilos de transiciones y animaciones en VUE al HTML

Una vez se definieron los estilos debemos incluir en nuestro HTML un sección de transición indicando el nombre del efecto y un modo de aplicación.

En este ejemplo el contenido del span estará cambiando con lo cual es importante que definamos un key que identifique el objeto que cambia y así la etiqueta transition pueda identificarlo.

      <transition name="efecto" mode="out-in">
        <span :key="indice" > {{ datos[indice] }} </span>
      </transition>

Para cambiar el contenido y rotar un mensaje simplemente definimos en el script una función que se ejecuta a intervalos periódicos y que cambia el valor de un índice con el que nos referimos al dato que queremos mostrar en el render declarativo del span.

  <script>
  export default {
    name: 'TarjetaDatos',
    data() {
      return {
        datos: ['VUE', 'React', 'Java', 'Node'],
        indice: 0
      }
    },
    methods: {
      rotarMensaje() {
        this.indice++;
        if(this.indice == this.datos.length) {
          this.indice = 0;
        }
      }
    },
    mounted() {
      setInterval(this.rotarMensaje, 2500);
    }
  }
  </script>

4. Artículos de Interés

Teoría de circuitos eléctricos

Este artículo contiene la Teoría de Circuitos Eléctricos básica que todo hobbista o estudiante del mundo de la electricidad y la electrónica deben conocer. Aquí encontraras información consolidada de las definiciones y conceptos requeridos para análisis más profundos de circuitos eléctricos.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Definiciones básicas

1.1. Definición de Voltaje

Antes de abordar el concepto de voltaje en la Teoría de circuitos eléctricos debemos entender que la carga es bipolar y que en la naturaleza está dada en múltiplos de la carga del electrón $1.6022×10^{-19}C$. Adicionalmente, los efectos de la electricidad son atribuidos a la separación entre cargas y sus movimientos.

El voltaje es entonces la energía por unidad de carga creado por la separación entre ellas y matemáticamente se puede escribir de la siguiente manera:

$v=\frac{dw}{dq}$

Siendo $v$ el voltaje, $w$ la energía y $q$ la carga.

1.2. Definición de corriente

Ahora bien, las cargas al moverse establecen un flujo el cual es conocido como corriente eléctrica y se define matemáticamente de la siguiente manera:

$i=\frac{dq}{dt}$

Siendo $i$ la corriente, $q$ la carga eléctrica y $t$ el tiempo.

1.3. Diferencia entre voltaje y corriente

Una analogía útil para comprender la diferencia entre voltaje y corriente es imaginar el voltaje como la presión que hace que se muevan los electrones y la corriente como el caudal de electrones, esta analogía la experimentamos en el día a día en tuberías de agua y aunque no es exactamente una equivalencia, por que por ejemplo los electrones se mueven muy despacio en los cables eléctricos y lo que viaja a una velocidad muy alta es el campo eléctrico, si nos sirve para hacernos una idea aproximada de estos conceptos.

1.4. Convención de asignación de signos

Note que las ecuaciones anteriores indican la magnitud y en general, la dirección de la corriente se establece en el sentido de la caída de voltaje. Establecer esta convención es necesario debido a la naturaleza bipolar de las cargas.

Otro punto importante anotar, es que aunque $i$ es discreta por ser múltiplos de la carga del electrón se suele tratar como una variable continua dada la gran cantidad de electrones presentes incluso en corrientes pequeñas.

La figura 1, muestra esta convención de signos esquematizando en una caja un componente eléctrico o electrónico cualquiera donde se produce una caída de voltaje, lo anterior implica que el componente esta absorbe o consume energía eléctrica.

convencion signos
Figura 1. Convención de signos

En caso, que esta convención sea contraria bien sea en la dirección de la corriente o en el voltaje el componente no extrae potencia del circuito sino que se la aporta.

2. Unidades utilizadas en Teoría de circuitos eléctricos

El sistema internacional de unidades SI, establece siete cantidades básicas de las cuales se pueden derivar cualquier otra:

  • Longitud (metro, m)
  • Masa (kilogramo, kg)
  • Tiempo (segundo, s)
  • Corriente eléctrica (amperio, A)
  • Temperatura (kelvin, k)
  • Cantidad de una sustancia (mol, mol)
  • Intensidad lumínica (candela, cd)

Para el caso de los circuitos eléctricos estas unidades básicas son:

  • Corriente eléctrica (Amperio, A)
  • Voltaje (Voltio, V)
  • Resistencia (Ohmnio, $\Omega$)

3. Potencia y energía

3.1. Potencia

En general, la potencia se define como la velocidad a la que se realiza un trabajo o que tanto energía se puede convertir (trabajo) por unidad de tiempo, en el ámbito de circuitos eléctricos la potencia puede ser positiva e indicará que se entrega energía, en caso contrario indicará que se consume energía.

De la definición podemos escribir:

$P=\frac{dw}{dt}$

Y realizando algunas transformaciones sencillas podemos relacionar la potencia con los conceptos ya vistos:

$P=vi$

3.2. Energía

De la mismas ecuaciones anteriores se puede deducir que la energía es equivalente a la potencia que se ha utilizado una cantidad de tiempo, es por esto que la unidad de Energía Eléctrica incorpora el tiempo, como ejemplo tenemos el $KWh$ (KiloWatio hora)

4. Ley de Ohm

La Ley de Ohm establece los conceptos básicos en las relaciones de los circuitos eléctricos y permite modelar con una relación bastante simple de proporcionalidad, en general se puede escribir una relación de proporcionalidad como:

$Efecto=\frac{Causa}{Resistencia}$

Y para el caso de los circuitos eléctricos se tiene:

$I=\frac{V}{R}$

Siendo $V$ el voltaje, $I$ la corriente y $R$ la resistencia.

Al incorporarse las definiciones de potencia podemos expresar la siguiente equivalencia:

$P=I^2R=\frac{V^2}{R}$

5. Artículos de Interes

Problemas Resueltos del Campo Eléctrico

Esta artículo recopila Problemas Resueltos del Campo Eléctrico que sean complejos y cuya solución sea retadora, por lo cual se aprenderá a resolver estos ejercicios y aquellos más simples serán más fáciles de resolver.

Si quieres aprender a programar en Java sigue este link

Si quiere entender las tecnologías más moderas en las empresas sigue este link

1. Barras Paralelas

Problema

Dos barras idénticas de largo $2a$ y con la misma carga $Q$ están separadas a una distancia $b$ siendo $b \gt 2a$. La carga esta distribuida de manera uniforme a lo largo de sus longitudes. Encuentre la fuerza ejercitada por una barra sobre la otra. La siguiente figura ilustra la situación.

Problema2BarrasCampoElectrico
Figura 1. Barras paralelas

Solución

Este problema puede ser difícil porque la ecuación del campo no nos permite relacionar dos cargas distribuidas puesto que el campo por definición es el efecto de una carga sobre una partícula puntual de carga, además tampoco podemos usar la ecuación de la fuerza porque requiere operar sobre cargas puntuales.

Para ello vamos a trazar la siguiente estrategia:

  1. Calcularemos el campo de la barra azul sobre un diferencial de carga de la barra amarilla.
  2. Calcularemos la fuerza del campo anterior sobre cada uno de los diferenciales de carga de la barra amarilla sumando todas las contribuciones.

El primer cálculo es relativamente sencillo, basta con hacer un cambio de variable ya que el diferencial de carga se puede relacionar con el diferencial de posición, esto lo hacemos para calcular la contribución de cada diferencial de carga de la barra azul con un único diferencial de carga de la barra amarilla, para simplicidad este diferencial de carga de la barra amarilla esta ubicado en b, finalmente la operación de integración juntará todas las contribuciones.

Siendo así la distribución de carga sobre la barra azul es $\lambda = \frac{Q}{2a}$ y su diferencial es:

$dq=\lambda dx$

Por lo cual el campo eléctrico en su magnitud es:

$E=k_e\int \frac{dq}{r^2}=k_e\int \frac{\lambda dx}{x^2}$

Donde $x$ es la distancia que separa el diferencial de carga de la barra azul del centro de la carga amarilla donde situamos el diferencial de carga, que será la partícula de prueba que utilizaremos para calcular el campo en ese punto. Por el momento note que no interesa la carga del la barra amarilla, solo interesa el punto $b$ donde se calculará el campo.

Esta integral es muy fácil de resolver, pero hay que poner atención en los límites, usualmente pensaríamos que es desde $-a$ hasta $a$ pero en este caso el campo sería cero, ya que estaríamos calculándolo en el centro de la barra azul, recordemos que el punto donde calculamos el campo es $b$ por lo cual la integral con límites y su evaluación es:

$E=k_e\lambda \int_{a+b}^{b-a}=k_e\lambda \frac{-1}{x}\rvert_{b-a}^{b+a}$

Evaluando en los límites y simplificando:

$E=k_e\lambda (\frac{2a}{a^2-b^2})$

El paso final consiste en calcular la fuerza teniendo el campo en este punto $b$, tenemos entonces que considerar todas las contribuciones de cada diferencial de carga en la barra amarilla y no solamente el ubicado en $b$, por lo cual debemos plantear la integral en función de la distancia, siendo $a$ fijo vamos a poner a variar la distancia $b$ desde el extremo izquierdo de la barra amarilla hasta el extremo derecho de la barra amarilla, por convención cambiaremos $b$ por $x$, resultando en la siguiente expresión de la fuerza:

$F=qE=2aK_e\lambda^2\int_{b-a}^{b+a}\frac{dx}{a^2-x^2}$

Al resolver la integral llegamos a la siguiente expresión:

$F=2aK_e\lambda^2 \frac{ln(x+a)-ln(x-a)}{2a}\rvert_{b-a}^{b+a}$

Posteriormente evaluándola y simplificando un poco obtenemos:

$F=k_e\lambda^2(ln(b+2a)+ln(b-2a)-2ln(b))$

Aplicando leyes de logaritmos, reemplazando la densidad de carga para obtener nuevamente la expresión en términos de $Q$ y teniendo presente que el logaritmo debe ser evaluado en valor absoluto puesto que queremos hallar la magnitud de la fuerza llegamos al resultado:

$F=\frac{k_eQ^2}{4a^2}ln( \frac{b^2}{b^2-4a^2})$

2. Artículos de Interés

Campos eléctricos y sus leyes

En este artículo aprenderás los conceptos básicos de los campos eléctricos y sus leyes entendiendo las fuerzas que los rigen y como se realizan los cálculos para resolver problemas, lo cual abrirá el camino para el manejo de conceptos más avanzados en Electricidad y Magetismo.

Si quieres aprender a programar en Java sigue este link

Si quiere entender las tecnologías más moderas en las empresas sigue este link

1. Las cargas eléctricas

La carga eléctrica es una propiedad de las partículas y las cuales generan los llamados campos eléctricos, así mismo y a diferencia de la masa la carga puede ser positiva o negativa, las siguientes propiedades definen las cargas:

  • Las cargas de diferente signo se atraen mientras que las cargas iguales se repelen.
  • La carga se conserva.
  • La carga esta cuantizada, es decir existe en múltiplos de la carga fundamental del electrón.

En estos conceptos hay dos aspectos más a considerar, el primero es que hay estudios y experimentos que muestran partículas con cargas fraccionarias del electrón, llamado quarks, segundo que la carga del protón es exactamente la misma del electrón pero de signo contrario y tercero y esto es una opinión personal, aunque podamos describir las cargas según los efectos que producen aun no entendemos bien que son, observe como una pregunta tan simple como qué es una carga no tiene una respuesta muy clara.

2. Conductores, semiconductores y aislantes

Seguramente has escuchado hablar de conductores los cuales asociamos directamente con metales y tal cual es así, los conductores poseen una estructura atómica que hace que en el último nivel de valencia los electrones están muy débilmente ligados al núcleo permitiendo su libre movimiento, a diferencia de los semiconductores que normalmente tienen la mitad de su último nivel lleno proporcionando cierta dificultad al movimiento de los electrones, estos materiales son sobre todo germanio y silicio, aunque existen otros compuestos, finalmente los aislantes tienen lleno su último nivel y no permiten que las cargas se muevan libremente.

3. Ley de Coulomb

Esta ley es muy parecida a la ley de gravitación universal de Newton de hecho las fórmulas tienen la misma forma, quizás la principal diferencia radica en que mientras la ley de la gravedad relaciona la fuerza que atrae dos masas la Ley de Coulomb relaciona la fuerza que atrae y repele dos cargas, estas fuerzas son proporcionales al producto de las cargas (o masas) e inversamente proporcional al cuadrado de la distancia que las separa. La siguiente ecuación vectorial establece esta fuerza.

$\mathbf F_{12}=k_e\frac{q_1q_2}{r^2}\mathbf r$

El vector $\mathbf r$ indica el sentido de las fuerzas y es un vector unitario dirigido desde $q_1$ hacia $q_2$ y $k_e=8.99×10^9 N \cdot m^2/C^2$ donde C es la unidad de carga eléctrica conocida como Coulomb, y en la naturaleza la carga más pequeña conocida es la del electrón o protón que difieren solo en su signo negativo o positivo respectivamente y en magnitud es igual a $\mid e \mid = 1.602×10^{19} C$.

Note que esta fórmula sólo modela el fenómeno pero no indica la naturaleza de las cargas o explica porque se atraen o repelen. En cuanto a la gravedad, Newton modelo el fenómeno pero no fue hasta Einstein que se logró comprender la gravedad como una deformación del espacio-tiempo. En el caso de las cargas aun no tenemos esta comprensión y hasta el momento solo podemos establecer las relaciones matemáticas que modelan los campos eléctricos.

4. Campos eléctricos

El concepto de campo es una construcción abstracta para indicar una región de influencia, en el caso del campo eléctrico (ya que existen muchos tipos de campos) este concepto sirve para entender una carga como puede llegar afectar a otras cargas de prueba en un punto dado del espacio, por lo cual el campo termina siendo la fuerza que ejercería una carga sobre otra carga de prueba en el espacio.

De esta manera definimos el campo eléctrico como:

$\mathbf E = \frac{\mathbf F}{q_0}$

O de forma equivalente

$\mathbf E = k_e\frac{q}{r^2}\mathbf r$

Siendo $q$ la carga que produce el campo y $r$ la distancia a la cual una carga de prueba $q_0$ generaría una fuerza en el sentido del vector unitario $\mathbf r$ dirigido entre desde la carga $q$ hacia la carga $q_0$ ubicada a una distancia $r$ de $q$.

También podemos calcular el campo eléctrico debido a un conjunto de cargas puntuales teniendo en cuenta las contribuciones de cada una de estas cargas en el campo:

$\mathbf E = k_e \sum_i \frac{q_i}{r_i}\mathbf r_i$

De forma similar, podemos tener una carga distribuida e integrar en lugar de sumar para hallar el campo total debido a esta carga, como se muestra a continuación:

$\mathbf E = k_e \int \frac{q_i}{r_i}\mathbf r_i$

5. Líneas de campo

Las líneas de campo eléctrico son una forma útil de visualizar el campo en el espacio debido a una carga, además de permitir realizar cálculos útiles de cinemática clásica usando la leyes de Newton del movimiento, de esta forma podremos calcular la aceleración de una partícula con masa $m$ en el campo así:

$\mathbf a= \frac{q \mathbf E}{m}$

La siguiente imagen muestra una ilustración del campo eléctrico debido a una carga, note que este es radial y se dirige hacia afuera para cargas positivas y hacia adentro para cargas negativas.

Líneas de campo eléctrico
Figura 1. Líneas de campo eléctrico

6. Artículos de Interés

Hola Mundo en BPMS con BonitaSoft

Desarrollo desde cero un programa tipo Hola Mundo en BPMS con BonitaSoft, tendrás la posibilidad de sistematizar un proceso de compras sencillo y con este conocimiento incursionar en casos más complejos que requieran sistemas para soportar procesos.

El proceso que se diseñara en este tutorial será un proceso de compras con una decisión y sistematizado en BonitaSoft.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Entorno BonitaSoft

BonitaSoft es un software categoría BPMS que nos permitirá no solo diagramar nuestro proceso usando la notación BPMN sino también ejecutar nuestro proceso en un entorno web basado en una bandeja de tareas, así mismo la data estará disponible en bases de datos estructuradas a fin de permitir la consulta y la analítica posterior.

Si quieres descargar bonitasoft gratuitamente sigue este link.

La siguiente imagen muestra el entorno de BonitaSoft el cual al ser un software libre esta basado en el popular entorno de desarrollo Eclipse.

Entorno de BonitaSoft
Figura 1. Entorno de BonitaSoft

2. Diagrama de proceso y configuración básica

El primer paso en la sistematización del proceso es crear un proyecto en BPMS que contendrá todas las configuraciones y parametrizaciones de nuestro proceso. Para ello debes seleccionar del menú de bonita la opción nuevo proyecto.

Nuevo proyecto BPMS
Figura 2. Nuevo proyecto BPMS

Posterior a ello, debemos crear nuestro diagrama de proceso, basta seleccionar un nuevo diagrama le puedes dar nombre en este momento o posteriormente renómbralo, tal como se muestra en la siguiente figura.

Nuevo diagrama de proceso
Figura 3. Nuevo diagrama de proceso

Para completar esta etapa se debe diagramar el proceso de compras como según la lógica mostrada a continuación. En este punto es importante anotar que las tareas del diagrama son humanas, es decir tendrán una interface gráfica a través de la cual el usuario interactúa. Puede ser necesario que en las propiedades de la tarea selecciones humana, pues a menudo BonitaSoft utiliza tareas automáticas por defecto.

Proceso de compras
Figura 4. Proceso de compras

3. Configuraciones de actores

El paso siguiente consiste en configurar los actores. Los actores permiten definir las personas o usuarios a quienes se les asignar las tareas. Lo primero es sobre el pool definir los actores que van a en nuestro proceso, BonitaSoft podría inferir esto a partir de los swimlane pero aquí es un paso obligatorio, además se debe indicar el actor que podrá iniciar el proceso en este caso es el solicitante.

Actores sobre el pool
Figura 5. Actores sobre el pool

Posteriormente y por cada Lane debe definirse el actor que será responsable, en este caso como tenemos un actor por cada Lane, debemos mapear los actores del pool al Lane según corresponda.

Definir actores sobre los Lane
Figura 6. Definir actores sobre los Lane

Los actores también deben verificarse en las tareas, en este caso basta con verificar en cada tarea que el actor definido sea el mismo del lane.

Verificar actores en tareas
Figura 7. Verificar actores en tareas

Finalmente, para completar el paso de los actores, resta configurar en uno de los ambientes que BonitaSoft preconfiguro la asociación de roles con personas. Esta asignación se realizará en el ambiente local y se utilizara nombres específicos de usuarios, sin embargo note que se pueden mapear grupos o membresías a los roles definidos en el pool.

Mapeo de usuarios parte 1
Figura 8. Mapeo de usuarios parte 1
Mapeo de usuarios parte 2
Figura 9. Mapeo de usuarios parte 2

Los usuarios pueden ser configurados desde la pestaña organizaciones, por defecto BonitaSoft crea una organización denominada ACME y varios usuarios con datos ficticios para usar.

Configuración por defecto de la organización ACME
Figura 10. Configuración por defecto de la organización ACME

4. Modelo de datos

El modelo de datos nos permitirá crear aplicaciones que capturan datos y se almacenan de forma estructurada en bases de datos, para este caso el modelo de datos será muy sencillo y permitirá también definir las interfaces gráficas de usuario.

Definiendo el modelo de datos
Figura 11. Definiendo el modelo de datos

El modelo de datos son solamente variables asociadas con tipos de datos, asegurate de crear los siguiente datos que se usaran en la sistematización.

Modelo de datos del proceso de compras
Figura 12. Modelo de datos del proceso de compras

Finalmente, se debe desplegar este modelo de datos para poder usarlo, las siguientes imágenes muestran en orden la validación y confirmación de la validación y el despliegue y confirmación del despliegue del modelo de datos.

Validación y despliegue del modelo de datos
Figura 13. Validación y despliegue del modelo de datos

Ya que tenemos un modelo de datos válido, podemos usarlo, y para ello debemos agregarlo al pool dando un nombre.

Agregado del modelo de datos al pool
Figura 14. Agregado del modelo de datos al pool

El siguiente uso que le daremos al modelo de datos será agregarlo a las diferentes tareas, en este punto seleccionamos el modelo de datos y elegimos las variables del modelo que queremos usar en cada tareas. Note que esto se debe repetir por cada tarea y que estas opciones aparecen en la pestaña contrato opción añadir de cada tarea, así mismo que durante este proceso algunos mensajes de confirmación aparecerán.

Selección del modelo de datos en una tarea
Figura 15. Selección del modelo de datos en una tarea
Selección de variables del modelo de datos para una tarea
Figura 16. Selección de variables del modelo de datos para una tarea

5. Configuración de decisiones

Las decisiones o compuertas se configuran según la norma BPMN en este caso de este tutorial utilizaremos una compuerta exclusiva y el flujo de secuencia “no” lo marcaremos por defecto, como se muestra en la siguiente imagen.

Configuración de la compuerta y de la decisión no
Figura 17. Configuración de la compuerta y de la decisión no

En cuanto al flujo de secuencia “si” se procederá a configurar una condición de tipo script y asociar a esta la variable del modelo de datos booleana que permite tomar la decisión.

Configuración de la decisión si
Figura 18. Configuración de la decisión si
Resultado de la configuración si
Figura 19. Resultado de la configuración si

5. Formularios de datos

Para la configuración de los formularios de las tareas podemos encontrarnos ante una gran complejidad, pero el asociar el modelo de datos y las variables a cada tarea simplifica el proceso. A continuación crearemos los formularios simplemente en la opción contratos seleccionando editar formulario, lo cual abrirá un editor de formularios que permite diseñar interfaces gráficas complejas que oculten campos, los agrupen o realicen lógicas programadas en javascript. Note que este editor de formularios esta en la web y que este es un paso que debemos repetir por cada tarea del modelo.

Creación de formularios para las tareas
Figura 20. Creación de formularios para las tareas
Editor de formularios de BonitaSoft
Figura 21. Editor de formularios de BonitaSoft

6. Ejecución del proceso

Para ejecutar el proceso debemos validarlo primero a fin de determinar que no se tengan errores.

Figura 22. Validación del diagrama

Una vez validado y sin errores se puede proceder a ejecutar en uno de los ambientes, recordemos que en este caso configuramos nuestro proceso de negocio en ambiente local y que estas opciones están disponibles estando seleccionado el pool del proceso a ejecutar.

Figura 23. Ejecución del proceso de negocio

En este punto debemos iniciar sesión con el usuario solicitante, aquí se anota que BonitaSoft inicia sesión automáticamente con Walter Bates, así que debemos cerrar sesión y abrirla con Daniela Angelo, así mismo todos los usuarios tienen el mismo password bpm, esto se puede cambiar en las configuraciones de los usuarios bajo el modulo de Organización.

Para iniciar un primer proceso debemos dar clic en el boton start en procesos.

Figura 24. Botón de inicio de proceso

Las tareas deben ser tomadas para su ejecución y ya en el menu principal de BonitaSoft web vamos a poder ver las diferentes tareas a medida que los procesos se van ejecutando.

Toma y ejecución de tareas
Figura 25. Toma y ejecución de tareas

El paso final en este tutorial sería ejecutar el proceso realizando un juego de roles es decir, iniciando sesión con cada usuario asignado al proceso y verificando que lleguen las tareas y especialmente que la decisión se tome correctamente.

7. Artículos de Interés

Introducción a BPMS Definiciones y Aplicaciones

Este artículo aprenderás los conceptos básicos de esta tecnología la Introducción a BPMS Definiciones y Aplicaciones, además de sus características conocerás algunos de los proveedores utilizados y usos típicos de esta tecnología a nivel empresarial.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Definición básica de BPM, BPMN, BPMS y BPMM

Cuando empezamos a estudiar BPM nos encontramos con multitud de aplicaciones y profesionales que trabajan en estos conceptos, por ejemplo podemos encontrar un Ingeniero de Procesos que busca mejoras operativas o también equipos de calidad que desean documentar los procesos con estándares internacionales o también equipos de informáticos buscando sistematizar, automatizar o comunicar diferentes sistemas de información.

Para estas necesidades tan diversas BPM se constituye como una alternativa modera y muy utilizada por empresas de todos los sectores de la economía que buscan modernizar sus procesos, incluso aquellas que dan pasos hacía la Transformación Digital buscan metodologías y herramientas como estas para lograrlo.

En general, BPM significa Business Process Management y como tal es una metodología muy utilizada para documentar, analizar y sistematizar procesos, sin embargo comúnmente se le agregan más palabra a esta sigla y así encontramos:

  • BPMN: es la notación internacional y administrada por la OMG para la descripción de procesos de negocio.
  • BPMS: es la suite o software que permite a los ingenieros sistematizar, automatizar u orquestar procesos de negocios bajo la notación BPMN y haciendo uso de plataformas estándar.
  • BPMM: es la metodología que permite evaluar la madurez de una implementación BPM en una compañía bajo un modelo de capacidad y basado en 5 niveles muy similar al conocido CMMI.

Sigue los siguientes vínculos para consultar la norma BPMN en sus versiones más populares.

Version BPMN 2.0

Version BPMN 1.2

2. Sistemas y proveedores BPMS

Aunque existen muchos sistemas de corte BPM los módulos principales de estos sistemas son las siguientes:

Módulos de un BPMS
Figura 1. Módulos de un BPMS

Existen muchos proveedores de BPMS entre ellos las casas más grandes de Software en el mundo como IBM, Oracle u otro especializados en BPMS como Bizagi, BonitaSoft o ProcessMaker.

2.1. Características del entorno de modelamiento

  • Compatibilidad mínima con BPMN 1.2 hacia adelante
  • Módulo Nativo desarrollado por el fabricante
  • Posibilidades de portabilidad, exportación e importación de modelos
  • Modelamiento de coreografías y orquestación de procesos
  • Parametrización de modelos dentro del mismo entorno
  • Tecnología del entorno de modelamiento (Cliente)
  • Ergonomía del entorno de modelamiento
  • Gestión de configuración de los Modelos
  • Exportación de documentación de modelos (RTF, PDF, XML / BPEL)
  • Modelamiento de Reglas de Negocio
  • Validación de Errores de Modelamiento
  • Generador de formas para los procesos

2.2. Características del motor de WorkFlow

  • Grado de cobertura de elementos automatizados
  • Capacidad de respuesta (desempeño) del motor de workflow
  • Soporte del motor para ejecutar reglas de negocio
  • Arquitectura de tablas desplegadas en los procesos.
  • Capacidad del motor de ejecutar procesos en simultáneo
  • Capacidad del motor para controlar versiones en ejecución
  • Compatibilidad y portabilidad del código de modelos (BPEL)
  • Capacidad de integración del motor SOA / ESB / BRMS
  • Capacidad de balanceo de cargas del motor

2.3. Características de la bandeja de tareas

  • Ejecución Web / Móviles
  • Ergonomía de la bandeja de gestión de tareas
  • Semáforos para ejecución
  • Flexibilidad y personalización de alarmas
  • Trazabilidad gráfica de procesos
  • Motor de búsqueda para tareas
  • Visualización de versiones de procesos en ejecución

2.4. Capacidades SOA de un BPMS

  • Capacidad ejecutar y consumir Web Services
  • Capacidad de ejecutar Consultas a otros Sistemas
  • Agnóstico a la tecnologías de integración
  • Integración para inicio de sesión (LDAP)

2.5. Características de BPA y Simulación de un BPMS

  • Escenarios previos a la automatización
  • Análisis de comportamiento de variables críticas
  • Detección de la ruta crítica para modelos
  • Capacidad gráfica para ejecución de simulaciones
  • Gestión de Configuración para modelos
  • Uso de escenarios de medición en combinación con el BAM
  • Estadísticos disponibles para parametrizar
  • Análisis de escenarios

2.6. Capacidades de medición y BAM de un BPMS

  • Enfoque del entorno de medición (BI, OI, BAM)
  • Tecnologías en tiempo real (CEP)
  • Escalabilidad futura a Enterprise Decisión Management (EDM)
  • Generación de reportes dinámicos
  • Personalización de tableros de control
  • Extracción de datos de múltiples fuentes
  • Posibilidades de gráficos
  • Análisis de Datos
  • Generación de tendencias – análisis preventivos
  • Gestión de indicadores (acciones, seguimiento)

2.7. Capacidades adicionales de un BPMS

  • Gestión electrónica de Documentos
  • Manejo de escenarios personalizables para documentación
  • Capacidad de Perfilamiento
  • Capacidad de importar modelos desde otras fuentes
  • Mensajería (crear, enviar, recibir y leer mensajes)

3. Aplicaciones, proyectos y usos de BPMS

Algunas de las aplicaciones más importantes de los BPMS son aquellas que se centran en la sistematización de procesos de negocio que se realizan a través de papel o de forma muy incipiente con correos electrónicos. La sistematización, también puede conducir a un escenario donde exista un grado de automatización de tareas a través del uso de la capa SOA de un BPMS.

Otro uso muy importante de los BPMS es como capa de orquestación que permite a las organizaciones centralizar la comunicación entre los procesos en estos categoría de software.

En cuanto a la ejecución de proyectos en BPMS es muy importante considerar los siguientes items por parte del equipo del proyecto.

  • Establecer adecuadamente los equipos del proyecto
  • Establecer adecuadamente los tiempos
  • Gestionar el cambio
  • Realizar iteraciones comenzando con alcances pequeños y fáciles de concretar
  • Obtener el entendimiento del proceso en piso
  • Cuidar la duplicación de trabajo
  • Tomar el tiempo suficiente para el correcto desarrollo de las integraciones
  • Gestionar adecuadamente los requisitos y sus cambios

4. iBPMS

En los cuadrantes mágicos de Gartner se ha acuñado un termino denominado iBPMS donde se diferencian aquellos BPMS más avanzados del resto, haciendo la letra “i” alusión a inteligente, y aunque en la lista siguiente se muestran las características que debe tener un iBPMS la principal radica en la habilidad de manejar lo procesos al vuelo, es decir ejecuciones del proceso que ya han iniciado se puedan versionar para incorporar cambios que los especialistas de proceso requieran, lo anterior sin necesidad de volver a empezar las ejecuciones, cuestión que en la práctica en ocasiones no es posible.

Una BPMS inteligente es una categoría avanzada de las tecnologías diseñadas para BPM. Es la evolución natural del reciente mercado de BPMS, en donde se hace más énfasis en dar soporte a sistemas e inteligencia humana de los procesos de negocio más robustos. Por muchos años, en muchas ofertas (no en todas) de BPMS se han incluido capacidades como la simulación, la optimización y poder lograr una visión del rendimiento de los procesos. Los iBPMS modernos han agregado un soporte mejorado para la colaboración humana, integración con redes sociales, acceso a través de móviles a los procesos y toma de decisiones más analíticas y en tiempo real.

La siguiente es una lista de las principales características de los iBPMS.

  • Motor de Orquestación de Procesos
  • En vuelo y no estructurados
  • Entorno de composición gráfico basado en modelos
  • Apps heterogéneas y portales
  • Manejo de Contenido
  • ECM
  • Interacciones Humanas
  • Soporte multicanal
  • Process Intelligence y Business Activity Monitoring (BAM)
  • Analítica bajo demanda
  • Procesamiento de reglas de negocio
  • Reglas de negocio complejas

5. Artículos de Interés

« Entradas anteriores Entradas recientes »

© 2024 ochoscar's blog

Tema por Anders NorenArriba ↑