200 likes | 276 Views
EmpWeb – ABCD plugin. Curso de capacitación para transferencia tecnológica Sección relacionada con el área mySite, resolución de problemas y fuentes alternas de datos. Emiliano Marmonti Febrero 2010 emarmonti@gmail.com. mySite. Donde? Cuando?. mySite. Donde? Cuando?.
E N D
EmpWeb – ABCD plugin Curso de capacitación para transferencia tecnológica Sección relacionada con el área mySite, resolución de problemas y fuentes alternas de datos. Emiliano Marmonti Febrero 2010 emarmonti@gmail.com
mySite. Donde? Cuando? La primer ventana presenta el estado de disponibilidad de cada una de las copias, de aquí es posible pasar al mySite.
mySite (III) Ventana principal del mySite. Aquí ingresan los usuarios finales para realizar operaciones desde la web
Esquema de funcionamiento del mySite Java empWeb Php nuSoap SOAP engine ABCD mySite • Operaciones • UserStatus • makeReservation • cancelReservation • renewal
Actividad. Ejemplo de un problema con mySite En este caso, el mySite presenta que no se pudo cumplimentar una operación sin informar el porque de la falla
Análisis de reserve.php $user = new soapval('userId','',$_REQUEST["userId"]); $record = new soapval('recordId','',$_REQUEST["recordId"]); $volume= new soapval('volumeId','',$_REQUEST["volumeId"]); $category = new soapval('objectCategory','',$_REQUEST["objectCategory"]); $userdb = new soapval('userDb','',$_REQUEST["db"]); $objdb = new soapval('objectDb','',$empwebserviceobjectsdb); $library = new soapval('objectLocation','',$_REQUEST["library"]); //$from = new soapval('startDate','','20090322131211'); $param1 = array ( "name" => "operatorLocation" ); $myparam1 = new soapval ('param','',$_REQUEST["library"], 'http://kalio.net/empweb/engine/trans/v1',false,$param1); $param1 = array ( "name" => "operatorId" ); $myparam2 = new soapval ('param','','mysite',false,false,$param1); $myparams = new soapval ('params','',array($myparam1,$myparam2)); $myextension = new soapval ('transactionExtras','',$myparams,'',''); $params = array ($user,$record,$volume,$category,$userdb,$objdb,$library,$from,$myextension); //print_r($params); // Acá obtengo los datos generales $result = $client->call('waitSingle', $params, 'http://kalio.net/empweb/engine/trans/v1' , ''); //echo "Databse". $_REQUEST["db"]; //print_r($result); Construcción de valores SOAP Envío de transactionExtras Devolución de resultados de la transacción
Actividad • Un-comentar la devolución de los resultados y verificar como se ve la transacción desde el cliente PHP (mySite). Determinar el problema que existe y usando ABCD, solucionarlo.
Actividad net.kalio.empweb.engine.rules.ExtractUserClass_cant_find_user_class
Actividad La leyenda final del proceso consiste en los mensajes generados por cada uno de los pipelines y sus respectivos resultados
Fuentes de datos Alternas ISIS mySql Postgre SQL LDAP Empweb user service SOAP
Que métodos debería implementar un servicio de provisión de Usuarios? • searchUsers • searchUsersById central/bridge posee un ejemplo de configuración para una db genérica con una tabla de usuarios genérica de foma tal de poder implementar un webservice de usuarios basado en mySql.
Donde se definen fuentes alternativas de datos? engineconf.xml <base name="corporate" type="users"> <uri>http://localhost:9090/central/bridge/endpointusers.php</uri> <wsdlFile>/dbws/users/v1/empweb-users-service-1-0.wsdl</wsdlFile> </base> <base name="isis" type="users"> <uri>http://127.0.0.1:8085/ewdbws/services/ABCDUsersService</uri> <wsdlFile>/dbws/users/v1/empweb-users-service-1-0.wsdl</wsdlFile> </base> <base name="objetos" type="objects"> <uri>http://127.0.0.1:8085/ewdbws/services/ABCDMarcObjectsService</uri> <wsdlFile>/dbws/objects/v1/empweb-objects-service-1-0.wsdl</wsdlFile> </base> URL de atención de ewdbWS para usuarios URL de atención de ewdbWS para objetos
Bridge de conexión a usuarios mySql HOST=localhost PORT=3306 USER=root PASSWD=Emi1802 DATABASE=university EMPWEBDB=corporate QUERYBYID="SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE identification='<id>'" QUERYBYIDLIKE="SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE identification LIKE '<id>%'" QUERYBYIDFORREPORTS=" OR identification='<idx>'" QUERYBYNAMEEXACT="SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE last_name LIKE '<name>'" QUERYBYNAMELIKE="SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE last_name LIKE '<name>%'" QUERYBYLOGIN="SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE login='<login>'" DEBUG=TRUE LOGFILE="/ABCD/www/bases/bridge/log.txt" Definición de la vía de conexión con mySql Sentencias SQL modelo para responder a los diferentes criterios de consulta de usuarios Debugging
Bridge de conexión con mySql. Ejemplo incluído en la distro Ejemplo del uso de un LEFT JOIN simple para obtener un atributo de la entidad relacionada y así poder enviar datos completos a empweb SELECT identification,last_name,first_name,user_type.name,DATE_FORMAT(valid_until,'%Y%m%d'),login,passwd FROM users LEFT JOIN user_type ON users.user_type_id=user_type.id WHERE last_name LIKE '<name>’
Actividad • Incluir una tabla relacionada con usuarios denominada Facultad, incluir un atributo de relación en la tabla de usuarios y usando PhpMyAdmin, cargar las facultades de los usuarios registrados.
Foto del usuario final. Photoproxy.php user_status_result.jsp <div> <jxp:set cnode="${userInfoResult}" var="userInfo" select="//uinfo:userCollection" nsmap="${nsm}" /> <c:choose> <%-- This user does not exist in the database --%> <c:when test="${userInfo['uinfo:user'] == null}"> <p><fmt:message key="no_results_found"/></p> </c:when> <%-- We found a matching user: display it --%> <c:otherwise> <dsp:user doc="${userInfoResult}" select="//uinfo:userCollection" nsmap="${nsm}"/> </c:otherwise> </c:choose> </div> User.tag Opción de startup <table> <tr> <td rowspan="4"> <img src="${abcd}photoproxy.php?imgid=users/${userInfo['u:photo']}" alt="PICTURE"/> </td> <td><fmt:message key="user_id" /></td>
Esquema de Funcionamiento JSP PHP (photoproxy) mySite (PHP) GD
Actividad • Se decide que para cada usuario se tomarán dos fotos, frente y perfil. Cada foto tiene el nombre del usuario (la de frente) y la perfil, el nombre_p. Diseñar un script photoproxy2.php el cual sirva dicha foto y que solo resulte consumido desde Empweb-intranet.