Flessibilità dei mercati ed adattamento delle piattaforme informatiche

Se vi occupate dell’IT in un’azienda, molto probabilmente vi sarà capitato di avere a che fare con i continui adattamenti dei sistemi informatici alla flessibilità di mercato.

Vi sarà capitato di avviare un progetto e, dopo un anno, rendersi conto che le esigenze aziendali erano già cambiate. In questo caso sarete corsi ai ripari cercando di sistemare il progetto già in essere mettendo delle pezze o facendo sviluppare “nuove features”.

Proprio per questo motivo, in tantissime occasioni, sul blog abbiamo spiegato l’importanza di adottare software altamente flessibile.

Per flessibilità di un software si intende appunto la facilità di adattamento ai cambiamenti interni ed esterni all’azienda.

Con il tempo, molti sistemi gestionali, si sono attrezzati in modo da poter installare plugin (addon) completamente integrati con il software stesso ed in grado di rispondere a qualsiasi esigenza.

Questa soluzione permette di non intaccare il “cuore” del gestionale (si deve sapere che ogni modifica di codice al sistema originale può comportare malfunzionamenti al sistema stesso ed occorre necessariamente fare ulteriori e costosi test) e di semplificare notevolmente lo sviluppo del plugin concentrandosi soltanto sulle esigenze da risolvere.

Inoltre è probabile che, prima della vostra azienda, già un’altra realtà aziendale aveva bisogno di risolvere lo stesso tipo di esigenza. Sarà quindi facile trovare un plugin già costruito che risolva quel particolare problema.

Questa soluzione, come avrete capito, farà risparmiare tempo e soldi di sviluppo.

E’ una soluzione che vale la pena adottare soltanto se il gestionale in questione adotta una politica di espansione a plugin, presenta molte verticalizzazioni ed è utilizzato da un numero sufficientemente grande di aziende.

Nel caso in cui non si è deciso di avviare un progetto informatico con strumenti flessibili allora molto probabilmente la vostra azienda sarà invasa da software eterogeneo con conseguente aumento dei costi di manutenzione ed aumento di ridondanza di dati spesso difficili da sincronizzare.

In questi casi si ha la percezione di rispondere in tempi brevi e costi ridotti alle continue richieste di mercato. In realtà, con il tempo, se non si adottano adeguate politiche di integrazione tra i sistemi, i costi di gestione aumenteranno esponenzialmente.

TimeMap, prova anche tu la mappa storica per ogni itinerario turistico

Se sei una struttura alberghiera, un agriturismo, un ostello o hai una qualsiasi attività che ha a che fare con il turismo allora copia e incolla gratuitamente questo codice nelle tue pagine html.

<iframe width="700" height="790" src="http://www.informaticagestionale.it/KnowMap/mappe/timeMap.html?lat=42.718507&lon=12.110745" frameborder="0" allowfullscreen></iframe>

(ATTENZIONE: se inserite il codice nelle vostre pagine HTML informate i lettori che vengono installati cookie di terse parti di google analytics secondo queste policy)
la pagina originale http://www.informaticagestionale.it/KnowMap/mappe/timeMap.html?lat=42.718507&lon=12.110745 possiede il corretto banner informativo

 

guarda le istruzioni

ATTENZIONE: per cambiare il luogo di riferimento della mappa basta inserire la nuova latitudine e longitudine direttamente sul codice a questa altezza “…lat=42.718507&lon=12.110745“.

E’ possibile ottenere la latitudine e la longitudine di una città direttamente su questo sito web

http://www.coordinate-gps.it/

inserire il nome del paese e poi cliccare su “trova coordinate GPS”.

Una volta copiato il codice, ogni utente potrà visualizzare l’edificio storico filtrando in base ad una determinata epoca: antico, medioevo, moderno, contemporaneo.

 

 

Buon divertimento!

la mappa “storica” interattiva di InformaticaGestionale.it

InformaticaGestionale.it ha messo a punto una nuova mappa interattiva che attrae potenziali clienti se posizionata in maniera corretta all’interno delle vostre pagine web. E’ anche un modo per sfruttare le enormi risorse storiche architetturali del nostro paese.

E’ una mappa che sfrutta una tecnologia avanzata per l’acquisizione dei dati sparsi nella rete.

Sulla base della posizione dell’ utente la mappa visualizzerà tutti i luoghi interessanti più vicini alla sua posizione. Il cliente può scegliere se visualizzare di default tutti i luoghi oppure selezionare una determinata epoca storica: in questo caso la mappa visualizzerà soltanto i luoghi che hanno avuto almeno un evento interessante durante l’epoca selezionata.

L’utente può anche “giocare” mettendo altre posizioni oppure visualizzando la mappa in modalità “fullscreen“.

Un buon campo di utilizzo può essere su pagine web relative a turismo (alberghi, consorzi, agriturismo, comuni, province, regioni) o alla formazione :

 

Prova anche tu!


Per questa mappa interattiva (con possibilità di inserire una città e la selezione dell’epoca) copia e incolla il codice sotto sulle tue pagine html

<iframe width="516" height="790" src="http://www.informaticagestionale.it/timeMap/examples/timeMap.html" frameborder="0" allowfullscreen></iframe>

mappa senza menù

copia e incolla il codice sottostante.

<iframe width="516" height="710" src="http://www.informaticagestionale.it/timeMap/examples/timeMapCut.html" frameborder="0" allowfullscreen></iframe>

Possiamo personalizzare la mappa in modo da “fissarla” su una determinata posizione ad un prezzo molto contenuto. Per informazioni contattateci.

Creazione di una semplice web application utilizzando maven, jpa2, spring, struts2, mysql (parte 4)

Definito il nostro modello User, vogliamo creare alcuni servizi su di esso. In particolare vogliamo dare la possibilità al sistema di creare nuovi utenti, eliminarli, aggiornarli e prelevarli tutti in una lista.

Per fare questo creeremo un’interfaccia UserService.java.

package it.sample.webapp.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import it.sample.webapp.model.User;

public interface UserService {
  /**
   * Creates a new user
   * @param user new user to be created
   * @return updated user object that should be used for further updates
   * @throws javax.persistence.PersistenceException when the user can not be 
   *       persisted. This is a <code>RuntimeException</code>
   */
  public User createUser(User user);
  
  /**
   * Deletes the specified user
   * @param user user object to be deleted
   * @throws javax.persistence.PersistenceException when the user can not be 
   *       deleted. This is a <code>RuntimeException</code>
   */
  public void deleteUser(User user);
  
  /**
   * Updates the specified user
   * @param user user object to be updated
   * @return updated user object that should be used for further updates
   * @throws javax.persistence.PersistenceException when the user can not be 
   *       persisted. This is a <code>RuntimeException</code>
   */
  public User updateUser(User user);
  
  /**
   * Gets the user using specified user id
   * @param id unique id assigned to the user
   * @return <code>User</code> object; <code>null</code> if the user does not 
   *       exist in the database
   */
  public User getUser(Long id);
  
  /**
   * Gets all the users
   * @return list of all the users
   */
  public List<User> getAllUsers();
  
  /**
   * Gets the user using specified user name
   * @param name user's name
   * @return <code>User</code> object corresponding to the specified name; 
   *     <code>null</code> if the user does not exist in the database
   */
  public User getUserByUserName(String username);
}

									

L’interfaccia sarà poi implementata dalla classe UserServiceImpl.java

package it.sample.webapp.service.impl;

import java.util.List;

import javax.persistence.NoResultException;

import org.apache.log4j.Logger;
import org.springframework.transaction.annotation.Transactional;

import it.sample.webapp.dao.jpa.UserDao;
import it.sample.webapp.model.User;
import it.sample.webapp.service.UserService;

@Transactional
public class UserServiceImpl implements UserService{
  Logger  logger = Logger.getLogger(this.getClass());
  private UserDao userDao;
  
  @Override
  public User createUser(User user) {
    return userDao.save(user);
  }

  @Override
  public void deleteUser(User user) {
    userDao.delete(user.getId());
  }

  @Override
  public List<User> getAllUsers() {
    return userDao.getAll();
  }

  @Override
  public User getUser(Long id) {
    User user = null;
    try {
      user = userDao.getById(id);
    }
    catch (NoResultException nsre) {
      if (logger.isDebugEnabled()) {
        logger.debug("No user found for the specified ID : [" + id + "]");
      }
      user = null;
    }
    return user;
  }

  @Override
  public User updateUser(User user) {
    return userDao.save(user);
  }

  @Override
  public User getUserByUserName(String username) {
    User user = null;
    try {
      user = userDao.getByUserName(username);
    }
    catch (NoResultException nsre) {
      if (logger.isDebugEnabled()) {
        logger.debug("No user found for the specified Name : [" + username + "]");
      }
      user = null;
    }
    return user;
  }
  
  /**
   * Sets the DAO used by this service for persisting <code>User</code> object
   * @param userDao the user DAO to be used for persistence
   */
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }

  /**
   * Gets the <code>User</code> DAO used for persistence
   * @return the user DAO used for persistence
   */
  public UserDao getUserDao() {
    return userDao;
  }
}

									

Adesso creiamo una classe SampleAction richiamata da struts in modo da scrivere un minimo di logica di business.

Leggi tutto “Creazione di una semplice web application utilizzando maven, jpa2, spring, struts2, mysql (parte 4)”