Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Taller: Integración de Moodle con sistemas externos (Web services)
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Taller de la la Moodle Moot Madrid 09 titulado "Integración de Moodle con sistemas externos (Web services)" realizado por Marc Alier, Jordi Piguillem y Miguel Angel Conde.
Buenos días a todos
00:00:00
Benvindos ao taller de webservices
00:00:03
Marc Calier e Jordi Pirillán están chegando
00:00:05
Sabéis o que é o tráfico en Madrid e estas cosas
00:00:08
Darles un pouco de respiro
00:00:11
E perdonarles este retraso
00:00:13
Eu vou começar, meu nome é Miguel Ángel Conde
00:00:15
Tambén estamos nós, David Castro
00:00:17
Que nos vai apoiar en toda a parte de un experimento
00:00:18
Na parte experimental do taller que vamos ver
00:00:21
Bien
00:00:24
Os puntos que vamos ver
00:00:25
Ván a ser unha breve introducción
00:00:27
Hablaremos un pouco dos servizos
00:00:28
Da arquitectura dos servizos en Moodle
00:00:30
Como se planteou esa arquitectura dos servizos
00:00:32
Que aplicacións poden aportar esos servizos
00:00:34
E por último, será un experimento
00:00:36
Bien
00:00:39
Se empezamos a hablar de servizos
00:00:40
Eu non digo de servizos web
00:00:41
Eu digo de servizos
00:00:42
A todo o mundo pode considerar
00:00:44
A necesidade de poder utilizar algo
00:00:46
Que dentro de un sistema
00:00:48
Para cualquier outro propósito
00:00:49
Que non seja o que inicialmente previsto
00:00:50
Ou o que inicialmente considerado
00:00:53
Quer dizer, nós temos un sistema
00:00:55
Que nos aporta unha potencia enorme
00:00:57
E queremos que esa potencia enorme
00:00:59
Non só se dê dentro de ese sistema
00:01:00
Só que se dê en cualquier outro propósito
00:01:02
Hoje em dia, cada vez son máis
00:01:04
O planteamento, a creación de sistemas
00:01:06
Según arquitecturas orientadas a servizos
00:01:08
Quer dizer, non buscamos prover unha tecnologia
00:01:10
Non buscamos prover algo
00:01:12
Que funcione só para unha cosa
00:01:14
Buscamos prover un servizo
00:01:16
E ademais un servizo que sea portable
00:01:17
Que sea multiplataforma
00:01:19
Que sea escalable
00:01:21
Que poda crecer dentro de unha arquitectura
00:01:22
Ademais que sempre nos permite unha flexibilidade
00:01:25
Que non nos anclemos en algo determinado
00:01:28
Teniendo en cuenta todo ese contexto
00:01:31
Nos podemos poner a pensar agora en os LMS
00:01:33
En as plataformas de aprendizaje
00:01:36
Ben, seja modelo, ben seja cualquera
00:01:38
Que nos aportan?
00:01:40
Nos aportan un conjunto de funcionalidades
00:01:41
E un conjunto de funcionalidades
00:01:43
Que podrían aplicarse a moitos outros contextos
00:01:45
En concreto, se nos ponemos a pensar
00:01:50
En las plataformas de aprendizaje
00:01:52
Por ejemplo, nos poden proporcionar alta de usuario
00:01:54
Nos poden proporcionar gestión de cursos
00:01:56
Nos poden proporcionar gestión de contenidos
00:01:58
Todos esos servizos
00:02:00
Podríamos utilizarlos dentro de outros contextos
00:02:02
Podríamos utilizarlos dentro de dispositivos móviles
00:02:04
Podríamos utilizarlos dentro
00:02:06
O combinado con herramientas de la COFIS
00:02:08
En cuantos sitios non habéis visto?
00:02:10
A cuantas personas non habéis visto?
00:02:12
Tratando de integrar el alta de los alumnos en Moodle
00:02:14
Con otro tipo de sistema
00:02:16
Por ejemplo
00:02:18
Decir, non é que eu quero algo que sea transparente
00:02:19
Ademais, quero que me logue unha única vez
00:02:21
Y poder entrar a meus cursos
00:02:23
Pero que realmente tenga outro segundo sistema
00:02:25
Que estamos buscando?
00:02:27
Estamos buscando un servicio
00:02:29
Un servicio que Moodle nos proporciona
00:02:31
E que, ademais, queremos poderlo utilizar en outros contextos
00:02:33
Por poner outros exemplos
00:02:35
Podríamos ver técnicas de visualización de la información
00:02:37
Sobre información que nos proporcione la plataforma de aprendizaje
00:02:39
Podríamos considerar
00:02:41
Seguimiento de un curso
00:02:43
Podríamos considerar extracción de contenidos
00:02:45
Para su utilización en cualquier otro contexto
00:02:47
Lo que se busca
00:02:49
Es dar esa potencialidad
00:02:51
Pero non solo limitado a un punto
00:02:53
Sino que, ademais
00:02:55
Lo que queremos es poderlo exportar
00:02:57
Poderlo utilizar en cualquier outro contexto
00:02:59
Poderlo utilizar
00:03:01
En lugares donde inicialmente non estaba previsto
00:03:03
Bien
00:03:07
Hablando de todo esto
00:03:09
Habréis oído hablar alguna vez de los servicios web?
00:03:11
Os suenan los servicios web?
00:03:13
Cuantos de aquí sois programadores?
00:03:15
Cuantos de aquí sois programadores?
00:03:17
Bien, esto será útil
00:03:19
Cuantos habéis programado servicios web?
00:03:21
Bueno, algo es algo
00:03:23
Bien
00:03:25
Lo digo sobre todo por el experimento posterior
00:03:27
Bien
00:03:29
Sobre todo la idea
00:03:31
De lo que se busca con un servicio
00:03:33
Es independizar la implementación que haya subyacente
00:03:35
Con respecto a la funcionalidad
00:03:37
Que se está proporcionando
00:03:39
A nosotros nos dan una interfaz
00:03:41
Nos dan una API
00:03:43
Que nos permite repasar estos parámetros
00:03:45
Como lo haga internamente
00:03:47
Queremos esa capacidad de encapsulamiento
00:03:49
Esa capacidad de abstracción
00:03:51
Y también no generar unas dependencias
00:03:53
Que nos obligarían a utilizar un contexto determinado
00:03:55
Bien, en cualquiera de los casos
00:03:57
Esos servicios se transforman en servicios web
00:03:59
Y mediante diferentes tipos de tecnologías
00:04:01
Diferentes tipos de protocolos
00:04:03
Podremos ver unos conectores
00:04:05
Podremos ver
00:04:07
Que existen diferentes protocolos
00:04:09
En la web para poder llevar a cabo esto
00:04:11
Los protocolos son necesarios
00:04:13
No podemos poner simplemente el servicio web a funcionar y se acabó
00:04:15
No podemos decir
00:04:17
Es que yo pongo una función y eso es suficiente
00:04:19
No, necesitamos un protocolo
00:04:21
Necesitamos hacerlo de una manera apropiada
00:04:23
Necesitamos poder hacer eso de una forma escalable
00:04:25
Que además luego nos permita utilizarlo en otros sitios
00:04:27
Porque sino no estaríamos haciendo nada
00:04:29
Estaríamos haciendo una API con un conjunto de funciones y se acabó
00:04:31
Bien, vosotros sois programadores
00:04:33
Y habéis programado en Moodle, ¿verdad?
00:04:35
Os habéis encontrado
00:04:37
Un problema, yo creo que si
00:04:39
Podemos definir algún tipo de actividad
00:04:41
O un módulo o alguna aplicación externa Moodle
00:04:43
Que utilice Moodle
00:04:45
¿Qué pasa cuando cambiamos de versión?
00:04:47
Pues que la mayor parte de las veces
00:04:51
Nos cambian el modelo de datos, los valores o lo que sea
00:04:53
Y se va todo al carajo
00:04:55
Bien, ¿qué es lo que estamos intentando hacer?
00:04:57
Lo que vamos a intentar hacer es proveer
00:04:59
Una API, un conjunto de funciones
00:05:01
Que se invocarán a través de una serie de conectores
00:05:03
En forma de servicios web
00:05:05
Y que nos devolverán una información
00:05:07
Que harán que seamos independientes
00:05:09
Del tipo de versión, por ejemplo, que se vaya
00:05:11
Esto es fundamental
00:05:13
Lo que se ha comprometido el equipo de Moodle
00:05:15
Es mantener una API externa
00:05:17
Que podrá irse ampliando
00:05:19
Y que nos permitirá hacer eso a través de diferentes versiones
00:05:21
Moodle se encargará de implementar
00:05:23
Las diferentes funciones
00:05:25
Y por ello sabrán como lo harán
00:05:27
Y nos devolverán el valor, el retorno de esas funciones
00:05:29
Independientemente de que hayan cambiado
00:05:31
El modelo de datos o no, eso no nos importa
00:05:33
Nosotros podremos seguir invocando
00:05:35
A los servicios web exactamente de la misma manera
00:05:37
Esa es sobre todo la idea
00:05:39
Con eso, ¿qué estamos evitando?
00:05:41
Que yo, por ejemplo, haya hecho un módulo
00:05:43
Buenísimo para hacer
00:05:45
Cualquier tipo de gestión
00:05:47
Que cambien la versión y me metan los roles
00:05:49
Que supongo que a todo el mundo le habrá pasado
00:05:51
En el momento que surgieron los roles en Moodle
00:05:53
Y que digamos
00:05:55
Ya no me funciona nada
00:05:57
Vamos a intentar
00:05:59
Mediante este tipo de sistemas
00:06:01
Que dejemos de tener este tipo de frustraciones
00:06:03
Y de tener que cambiar muchísimo código
00:06:05
Que no solamente es en cuanto a
00:06:07
Como nos sentimos nosotros, sino que es tiempo y dinero
00:06:09
En muchas ocasiones
00:06:11
Bien, pues a través de este tipo de tecnologías
00:06:13
Lo que buscaremos es eso
00:06:15
Por una parte
00:06:17
Y por otra parte tendremos que plantear
00:06:19
Una API, un conjunto de funciones
00:06:21
Lo suficientemente bien fundamentado
00:06:23
Para que eso pueda crecer
00:06:25
Es decir, no podemos decir
00:06:27
Ahora planteo una arquitectura de servicios web como quieras
00:06:29
Vamos a ser un poquito organizados
00:06:31
En la manera correcta y vamos a hacerlo
00:06:33
De acuerdo con las especificaciones
00:06:35
Que se dan en Moodle
00:06:37
Con Moodle se trabaja todos los días
00:06:39
Se acuerdan las interfaces para los servicios
00:06:41
Se acuerdan las funciones y se acuerdan parámetros de seguridad
00:06:43
Claro, si alguien
00:06:45
Supongo que nadie estará involucrado
00:06:47
Ahora mismo en el desarrollo de servicios web
00:06:49
Nosotros estamos, pues está la UPC
00:06:51
Está la Universidad de Salamanca
00:06:53
Y están algunas empresas también de Barcelona
00:06:55
Pues en este desarrollo
00:06:57
Nos estamos pegando
00:06:59
En muchas ocasiones
00:07:01
Con Peter Skoda, con Martin Gullamas
00:07:03
Determinando qué hacer, qué no hacer
00:07:05
Cómo hacerlo con seguridad, cómo no hacerlo
00:07:07
Es decir, ahora mismo existe un conjunto de servicios web
00:07:09
Nosotros veremos un pequeño cliente
00:07:11
Que ataca los servicios web
00:07:13
Para crear cursos y para crear usuarios
00:07:15
Es lo que vais a probar
00:07:17
Pero sobre todo tenemos que entender
00:07:19
Que este tipo de elementos
00:07:21
Va a cambiar y que ahora mismo
00:07:23
No está establecida la base
00:07:25
Con lo cual, igual hoy tenemos una porción de código funcional
00:07:27
Y mañana han cambiado ciertos parámetros de seguridad
00:07:29
Y tenemos que cambiarlo
00:07:31
Tenemos, hasta que no esté esa primera versión
00:07:33
Disponible, tenemos que ser cautos
00:07:35
Sobre todo en los desarrollos que llevamos a cabo
00:07:37
Actualmente
00:07:39
Existen un conjunto de servicios web
00:07:41
Backporteados para la versión 1.9
00:07:43
Y un conjunto de servicios web para la 2.0
00:07:45
Que es en el que más está trabajando
00:07:47
Bien
00:07:49
Dentro de esto, como os he dicho
00:07:51
Tenemos que plantear un modelo arquitectónico
00:07:53
Es decir, no podemos programar servicios web
00:07:55
Sin más
00:07:57
Bien, este modelo arquitectónico
00:07:59
Costaría en principio de tres capas
00:08:01
Puede ser que se varíen
00:08:03
Pero por ahora constaría de tres capas
00:08:05
Dentro de ellas tendríamos los conectores más famosos
00:08:07
Con los diferentes protocolos de conexión
00:08:09
Que se pueden hacer a servicios web
00:08:11
Por ejemplo, tendríamos REST
00:08:13
Tendríamos XMLRPC, tendríamos SOAP
00:08:15
¿Podrían añadirse más?
00:08:17
Sí, la idea es tener una arquitectura lo suficientemente flexible
00:08:19
Para que seamos capaces
00:08:21
De poder añadir cualquier tipo de protocolo adicional
00:08:23
De hecho, existen protocolos de interoperabilidad
00:08:25
Luego veremos en posibles aplicaciones
00:08:27
Que es maravilloso lo que se puede llegar a hacer
00:08:29
Podemos llegar a integrar
00:08:31
Una aplicación dentro de Moodle
00:08:33
Y podemos extraer información
00:08:35
De aplicaciones de Moodle
00:08:37
A nuestro sistema
00:08:39
Es decir, lo que vamos a proporcionar con esto
00:08:41
Vamos a proporcionar unas tecnologías de conexión
00:08:43
Que realmente nos permitan
00:08:45
Desvincularnos un poco de Moodle
00:08:47
E intercambiar información con él
00:08:49
De una manera coherente y que entienda
00:08:51
Por ejemplo
00:08:53
Podríamos crear un conector
00:08:55
Para el protocolo IMS LTI
00:08:57
No sé si conocéis ese protocolo
00:08:59
Es un protocolo de interoperabilidad
00:09:01
Que permitiría la integración
00:09:03
Por ejemplo, de herramientas externas
00:09:05
Dentro de Moodle
00:09:07
Por otra parte, tendríamos una segunda capa
00:09:09
Tendríamos una segunda capa
00:09:11
Que esos conectores llamarán
00:09:13
Esta segunda capa lo que provee
00:09:15
Es un conjunto de funciones
00:09:17
Que van a permitir comunicarnos
00:09:19
En el core de Moodle
00:09:21
Pero sin que nosotros sepamos nada
00:09:23
Será como esa API externa
00:09:25
Esa información que necesitemos utilizar
00:09:27
Y luego, por otro lado, tendremos
00:09:29
Lo que serían las bibliotecas de Moodle
00:09:31
Esto no lo vamos a tocar
00:09:33
Esto nos lo va a dar Moodle
00:09:35
Va a ser algo que se va a mantener
00:09:37
Algo que no va a cambiar demasiado
00:09:39
Esto no nos importará demasiado
00:09:41
Como también ya que el external
00:09:43
Lo que hará será envolver ese conjunto de funciones
00:09:45
Para poder llevar a cabo todo esto
00:09:47
Esas funciones que dependerán
00:09:49
De lo que vaya por debajo
00:09:51
Pero que a nosotros nos da igual
00:09:53
Nosotros nos podremos conectar
00:09:55
Utilizando ese tipo de conectores
00:09:57
De una manera totalmente transparente
00:09:59
A nuestro sistema
00:10:01
Bien, y ahora el señor Pidillén
00:10:03
Va a comentaros como se llevan a cabo
00:10:05
Este tipo de conexiones
00:10:07
Y luego volveremos con respecto
00:10:09
A las posibles utilidades
00:10:11
Que se le pueden dar a este tipo de servicios
00:10:13
Bien, como se haría esto
00:10:15
Normalmente el usuario
00:10:17
Lo que haría es desde un cliente determinado
00:10:19
Pasaría un usuario y un password
00:10:21
Se logaría
00:10:23
En principio solo tendría que logarse una vez
00:10:25
Porque lo que haría el sistema es devolverle un token
00:10:27
A partir de ese token podría interactuar con el sistema
00:10:29
Sin tener que estar intercambiando constantemente
00:10:31
Usuario y contraseña
00:10:33
Con lo cual se gana rápido
00:10:35
Se gana en el tamaño que pueda tener la conexión
00:10:37
Y no solamente en eso, se gana en seguridad
00:10:39
Si pasas cinco veces la contraseña
00:10:41
Es más fácil que te la puedan desencriptar que si la pasas una
00:10:43
Bien, después una vez teniendo ese token
00:10:45
Lo que haremos será invocar una determinada función
00:10:47
O un determinado módulo
00:10:49
De una parte del external
00:10:51
Con una serie de parámetros y con su nombre
00:10:53
Eso iría otra vez contra el servidor
00:10:55
Y lo que haría sería ejecutar o devolver
00:10:57
La información que fuera adecuada
00:10:59
En función de, bueno, utilizando
00:11:01
El conector
00:11:03
Que lo vayamos a considerar
00:11:05
Bien sea SOAP, bien sea REST, el que sea
00:11:07
A partir de aquí se ejecutaría
00:11:09
Se buscaría esa información dentro del servidor
00:11:11
Y esa información se devolvería
00:11:13
A través del servicio web
00:11:15
Y llegaría a lo que es el cliente PHP
00:11:17
Bien, si hablamos además
00:11:21
De las posibles aplicaciones
00:11:23
Que tienen los servicios web
00:11:25
Dentro de estas
00:11:27
Dentro de las posibles tecnologías existentes
00:11:29
Tendríamos
00:11:31
Hola, buen día
00:11:37
Buenos días
00:11:39
La introducción la tenía yo y Miguel Ángel
00:11:41
Se ha portado muy bien, empezaba antes de que llegáramos
00:11:43
Porque teníamos que desayunar
00:11:45
Y esas cosas
00:11:47
Ayer fue muy largo, desde cinco de la mañana
00:11:49
A una de la madrugada
00:11:51
Y esta mañana las horas se han pegado
00:11:53
Una pregunta
00:11:55
¿Cuantos de vosotros sois programadores?
00:11:57
Vale
00:11:59
Está claro
00:12:01
No sé si hasta que punto
00:12:03
Lo has contado
00:12:05
Que son los web services y que no son
00:12:07
¿Tenemos claro que no son?
00:12:11
Los web services no son algo
00:12:15
Que vayamos a utilizar como usuarios
00:12:17
Es algo que va a permitir que construyamos cosas encima
00:12:19
¿Vale?
00:12:21
Una de las cosas importantes a tener en cuenta
00:12:23
De esta arquitectura
00:12:25
Que hemos conseguido
00:12:27
Que Moodle moviera ficha el año pasado
00:12:29
Para implementar
00:12:31
Es primero que va a resolver un problema que ya tenemos
00:12:33
Que son todos los que hemos hecho
00:12:35
Integraciones contra Moodle
00:12:37
Hacer matriculaciones, crear cursos
00:12:39
Inscribir alumnos en cursos
00:12:41
Y cargar algunos materiales automáticamente
00:12:43
Empalmándolo con los softwares
00:12:45
Que ya tenemos cada uno, algunos privados
00:12:47
Algunos libres
00:12:49
Pero hemos tenido que hacer estas cargas manualmente
00:12:51
Esto hemos tenido que hacer los técnicos
00:12:53
Rascando en plan coraje
00:12:55
Y tocando las tablas
00:12:57
Y cada vez que en Moodle nos han liberado una versión
00:12:59
O una subversión, muchas cosas se han roto
00:13:01
La idea es que
00:13:03
Esta capa de web services
00:13:05
Se compromete a que
00:13:07
Al menos el equipo de core
00:13:09
Se compromete a que se mantenga relativamente estable
00:13:11
Va a permitir que
00:13:13
Cuando nos enchufemos
00:13:15
Cambiemos el desarrollo
00:13:17
Que los desarrolladores tendrán que volver a cambiar
00:13:19
Y adapten sus aplicaciones de backoffice contra esto
00:13:21
Esto no cambie
00:13:23
La idea sobre todo es
00:13:25
La idea que ya teníamos el año pasado
00:13:27
Era decir, queremos que la migración
00:13:29
A Moodle 2.0 sea poco dolorosa
00:13:31
Porque ya va a ser dolorosa
00:13:33
Porque hay algunas cosas que van a cambiar
00:13:35
Y cuando los usuarios nos cambian las cosas del sitio
00:13:37
Siempre nos quejamos, aunque luego nos guste
00:13:39
Pero primero es quejarse
00:13:41
Imaginamos si encima la migración va a ser
00:13:43
Dolorosa por parte de sistemas
00:13:45
Entonces
00:13:47
Por eso en Moodle 2.0 se están haciendo los web services
00:13:49
Pero también
00:13:51
Sobre todo desde el equipo de la Universidad de Salamanca
00:13:53
Y CLEI están backporteando
00:13:55
Están backporteando
00:13:57
Los web services a 1.9
00:13:59
De forma que podremos
00:14:01
La migración que vamos a hacer hoy
00:14:03
Contra Moodle 2.0 en la máquina de Piggy
00:14:05
Pues se podrá hacer
00:14:07
Funcionar contra un Moodle 1.9
00:14:09
Con los web services montados
00:14:11
Y entonces cuando tengamos que emigrar
00:14:13
De 1.9 a 2.0
00:14:15
Con un poco de suerte funcionará todo
00:14:17
A la primera y sino tendremos que tocar
00:14:19
Algunas pocas cosas
00:14:21
Porque de alguna forma la migración sea poco dolorosa
00:14:23
Y de alguna forma podamos invertir
00:14:25
En software de sincronización potente
00:14:27
Ya que permanezca
00:14:29
Esta es una línea
00:14:31
La otra línea es desde la línea
00:14:33
De la gente que dice
00:14:35
No, no, es que yo estoy más preocupado
00:14:37
En que cuando yo aplico mi docencia con Moodle
00:14:39
Es que yo tengo profesores que quieren usar
00:14:41
Google Docs
00:14:43
O ahora hay algún cafre que quiere usar Google Wave
00:14:45
O yo quiero tener
00:14:47
Un grupo de fotografías en Flickr
00:14:49
Que son las fotografías de los alumnos
00:14:51
O yo quiero tener
00:14:53
Google Maps
00:14:55
Pues como integro este tipo de cosas
00:14:57
La gente que dice no, no, es que yo tengo gente
00:14:59
Que tiene auténticos problemas de accesibilidad
00:15:01
Y quiero acceder al curso de Moodle
00:15:03
Con unas limitaciones
00:15:05
De accesibilidad terribles
00:15:07
Y a ver, todo el que tenga
00:15:09
Un teléfono móvil se da cuenta
00:15:11
De lo difícil que es acceder a Moodle
00:15:13
Un teléfono móvil con navegador web
00:15:15
Ve lo poco accesible que es Moodle
00:15:17
Porque cuando tienes una pantalla pequeñita
00:15:19
Moodle cuesta mucho de trabajar
00:15:21
Entonces la idea es que además
00:15:23
Tenemos un proyecto funcionando
00:15:25
La idea es sacar la información
00:15:27
De los web services
00:15:29
No únicamente los datos que tenemos
00:15:31
En administración
00:15:33
Grupos, cursos, permisos
00:15:35
Asignaciones, que esto es lo que interesa al centro
00:15:37
Y es digamos el argumento de venta
00:15:39
La idea es que también vamos a sacar
00:15:41
La información del curso por los web services
00:15:43
Y vamos a sacar la información que hay en los foros
00:15:45
Y que hay en los wikis
00:15:47
Y también vamos a meter funciones
00:15:49
Que permitan que alguien desde fuera
00:15:51
Añada información al foro
00:15:53
O alguien añada un comentario
00:15:55
O alguien envíe algún fichero
00:15:57
Por ejemplo podemos hacer unha actividad
00:15:59
Que consiste en hacer unha fotografía
00:16:01
Desde un teléfono móvil
00:16:03
Y envíarla directamente al Moodle
00:16:05
Todas estas cosas se podrán desarrollar
00:16:07
Pero lo más importante
00:16:09
Se podrán desarrollar de forma que quepan
00:16:11
En las instalaciones oficiales de Moodle
00:16:13
Porque no va a afectar a los servidores
00:16:15
Todas as cosas nuevas
00:16:17
Se poden montar en servidores
00:16:19
Más o menos de pruebas
00:16:21
Más o menos estables
00:16:23
Pero que de alguna manera no van a comprometer
00:16:25
Ni la seguridad ni la integridad del servicio
00:16:27
Ayer en la mesa redonda sobre contenidos
00:16:29
Hubo algunos administradores
00:16:31
Que dijeron
00:16:33
Yo soy administrador y no me gusta que me hagan según que cosas
00:16:35
Porque me rompen el sistema
00:16:37
Pues la idea es esta
00:16:39
Que tener mecanismos
00:16:41
Para que los experimentadores experimenten
00:16:43
Y que el que tiene que mantener el sistema estable
00:16:45
Y sólido
00:16:47
Puede hacer su trabajo correctamente
00:16:49
Esa es la idea
00:16:51
A partir de aquí la gracia es que
00:16:53
Contra los webservices
00:16:55
Aparte del proyecto que estamos arrancando
00:16:57
Que sea un proyecto de software libre
00:16:59
Y abierto a comunidad
00:17:01
Y que ya comunicaremos donde ponemos el código
00:17:03
Porque está todo muy
00:17:05
Como en Moodle.org nos cambian continuamente el kernel
00:17:07
Vamos despacito
00:17:09
Pero cuando as cosas se congelen por debajo
00:17:11
Podemos empezar a construir cosas encima
00:17:13
Cuando se congela un lago
00:17:15
Puedes empezar a patinar
00:17:17
Con un gelo muy delgadito
00:17:19
La idea es que se podan hacer tanto estos proyectos
00:17:21
Como otros muchos proyectos
00:17:23
Proyectos de accesibilidad o proyectos de integración más sólida
00:17:25
Con otros sistemas
00:17:27
Esta es la idea
00:17:29
Y ahora Pig ya tenemos el sistema montado
00:17:31
Vamos a ver una serie de ejemplos
00:17:39
Con respecto a como los servicios web
00:17:41
Pueden aplicarse realmente
00:17:43
Como podemos extraer realmente información adecuada
00:17:45
Por ejemplo en aplicaciones de back-office
00:17:47
Esto es un cliente feo
00:17:49
Pero es un cliente que actualmente funciona contra los servicios web
00:17:51
Y vosotros diréis
00:17:53
Tiene que agregar usuarios
00:17:55
Tiene que sacar log, tiene que crear cursos
00:17:57
Como cualquier herramienta externa
00:17:59
Además a Moodle
00:18:01
Y sin ir contra la base de datos directamente
00:18:03
Pero por ejemplo
00:18:05
Pensad vosotros si quisierais hacer lo siguiente
00:18:07
Vosotros tenéis acceso al log de Moodle
00:18:09
Y creéis que cuando una persona lleva tres días sin entrar
00:18:11
Le mande automáticamente a Moodle
00:18:13
Un mensaje diciéndole ¿Qué te pasa?
00:18:15
Que podríamos hacerlo por otra parte
00:18:17
Podríamos peinarnos todo el log
00:18:19
Ver qué personas llevan sin entrar tres días
00:18:21
Y mandarles manualmente un mensaje
00:18:23
¿Qué nos aporta esto?
00:18:25
Nos aporta la capacidad de poder extraer todo eso
00:18:27
Desde unha aplicación completamente externa
00:18:29
Tratar esa información
00:18:31
Y después proporcionar
00:18:33
En este caso un servicio
00:18:35
Como sería el de seguimiento
00:18:37
De los usuarios
00:18:39
Por otro lado
00:18:41
¿Por qué no hacer esto en dispositivos móviles?
00:18:43
Actualmente existe un cliente móvil
00:18:45
Que permite, a través de servicios web
00:18:47
Esto está creciendo y se está cambiando
00:18:49
Conectarse a Moodle
00:18:51
Ir explorando las categorías
00:18:53
Ir explorando los diferentes cursos
00:18:55
Y dentro dos cursos acceder a cada recurso
00:18:57
Y reproducirlo adaptado al dispositivo móvil
00:18:59
Si existe una serie de servicios web
00:19:01
No nos tenemos que preocupar de como recuperamos la información
00:19:03
Nosotros nos tenemos que preocupar
00:19:05
De el rol que tenemos
00:19:07
Como nos conectamos
00:19:09
Nosotros tenemos accesos y de consumirlos
00:19:11
Desde el dispositivo móvil
00:19:13
Con lo cual nos olvidamos de toda la tecnología subyacente
00:19:15
Solamente nos centramos en funciones concretas
00:19:17
De lo que queremos hacer
00:19:19
Por otro lado
00:19:21
También podemos hacer
00:19:23
Prospección o visualización de la información
00:19:25
Nosotros tendemos muchísima información a través de Moodle
00:19:27
Por ejemplo
00:19:29
Las palabras más destacadas dentro de los posts
00:19:31
Cogemos todos los posts de Moodle
00:19:33
Extraemos las diferentes palabras
00:19:35
Y vemos en qué se está interesando más la gente
00:19:37
También podríamos ver
00:19:39
El número de aprobados
00:19:41
O cuánta gente entra en una determinada actividad
00:19:43
A partir de determinar si esa actividad es más popular
00:19:45
Menos popular
00:19:47
Si el curso se está conduciendo de una manera adecuada
00:19:49
Es decir, tomar decisiones de negocio
00:19:51
En función de determinada información
00:19:53
A través de técnicas como estas
00:19:55
De visualización
00:19:57
Se forman galaxias con diferentes palabras
00:19:59
Conectadas entre ellas
00:20:01
En distintas actividades del Moodle
00:20:03
También podríamos hacer algo como esto
00:20:05
Tener un análisis visual adaptativo
00:20:07
En el que nosotros determinamos qué características queremos
00:20:09
Y a través de información
00:20:11
Que podemos encontrar en el log de Moodle
00:20:13
Por ejemplo, ver cuándo se conecta más la gente
00:20:15
Esto, si os fijáis, es un círculo horario
00:20:17
Y estamos viendo que hay más manchas amarillas
00:20:19
En una zona determinada
00:20:21
Esas manchas amarillas serán cuándo se conecta más la gente
00:20:23
Aquí tendríamos, por ejemplo
00:20:25
Desde las ocho de la mañana
00:20:27
Hasta aproximadamente la una del mediodía
00:20:29
Hay bastantes conexiones
00:20:31
Y luego a las seis de la tarde se repetiría
00:20:33
Lo cual, si por ejemplo pensamos en hacer
00:20:35
Una actividad sincrona
00:20:37
Tendríamos que hacerla en una de esas horas
00:20:39
Que es cuando más gente va a ver
00:20:41
Este tipo de información se puede explotar en diferentes contextos
00:20:43
Y estos son algunos de los que podemos encontrarnos
00:20:45
También tenemos, debido a Jordi Pivillén
00:20:49
La integración de un conector
00:20:51
Para poder integrar herramientas externas
00:20:55
Dentro de Moodle, que era lo que comentaba antes Mark
00:20:57
Esos cafres que usan, por ejemplo
00:20:59
Google Docs, o que usamos Google Docs
00:21:01
Para impartir docencia
00:21:03
Pues integrar eso en el Moodle
00:21:05
A ver, la idea es que esto
00:21:09
Si os fijáis un poco, aquí pone
00:21:11
Simple LTIs
00:21:13
LTI es
00:21:15
Las siglas que significan
00:21:17
Learning Technologies for Interoperability
00:21:19
Que es un estándar que está desarrollando
00:21:21
El IMS
00:21:23
¿Cómo?
00:21:25
Ah, Learning Tools
00:21:27
Lo cambian cada día, o lo cambio yo
00:21:29
Bueno
00:21:31
La idea es que
00:21:33
El Learning Tools for Interoperability
00:21:35
No existe todavía, porque es un estándar
00:21:37
Que se está desarrollando
00:21:39
Lo que sí que se ha hecho es publicar
00:21:41
Una versión inicial de este estándar
00:21:43
Que es el Basic LTI
00:21:45
Que se incorpora dentro del estándar
00:21:47
Common Cartridge 1.1
00:21:49
El Common Cartridge original
00:21:51
El 1.0, está muy orientado
00:21:53
A coger contenidos
00:21:55
Y meterlos dentro de Moodle
00:21:57
Eso es estilo Scorn
00:21:59
Vemos que es hermoso
00:22:01
Mientras que
00:22:03
En el 1.1
00:22:05
Con la incorporación del LTI
00:22:07
El Basic LTI
00:22:09
La idea es que nosotros podemos tener
00:22:11
Una aplicación que no esté necesariamente
00:22:13
Diseñada para un Learning Management System
00:22:15
Como por ejemplo puede ser
00:22:17
Google Docs
00:22:19
Y a través de una pasarela
00:22:21
Que desarrolló Jordi Piguillem
00:22:23
En Google Application Engine
00:22:25
Lo que podemos hacer es que
00:22:27
Documentos concretos
00:22:29
De Google Docs
00:22:31
Entren dentro de Moodle
00:22:33
A través del cliente de LTI
00:22:35
Para poder desarrollar el cliente de Basic LTI
00:22:37
Es necesario
00:22:39
Disponer de la tecnología
00:22:41
De los web services que hay por detrás
00:22:43
Para poder implementar el Common Cartridge 1.1
00:22:45
Necesitamos esta parte
00:22:47
Es bastante interesante porque
00:22:49
Permitirá integrar muchísimas cosas
00:22:51
Tanto herramientas que están hechas fuera
00:22:53
Por ejemplo, alguien ha hecho una aplicación hecha en .net
00:22:55
Que no se puede integrar dentro de Moodle
00:22:57
Pues desta forma se podía integrar
00:22:59
Y además podíamos hacer que la herramienta
00:23:01
Supiera cosas sobre en que curso nos encontramos
00:23:03
Quien es el usuario que está utilizando ahora
00:23:05
Cual es el rol que tiene dentro de la actividad
00:23:07
Y además podíamos enviar
00:23:09
Cosas como información sobre logs
00:23:11
O información sobre notas
00:23:13
Con lo cual
00:23:15
Es muy útil
00:23:17
También podíamos hacer cosas relacionadas
00:23:19
Con temas de escalabilidad
00:23:21
Por ejemplo, si estamos en una gran instalación
00:23:23
Que el 50%
00:23:25
De los hits de la actividad
00:23:27
Se está dando siempre en el mismo módulo
00:23:29
Podríamos tener un Moodle
00:23:31
Que simplemente se encargue de generar foros
00:23:33
Y con un producer
00:23:35
De foro
00:23:37
Utilizar en el Moodle
00:23:39
De verdad, el Moodle del centro
00:23:41
Simplemente decir que los foros
00:23:43
Son foros que nos está sirviendo
00:23:45
Otra máquina
00:23:47
Y desta forma tendríamos dos máquinas en paralelo trabajando
00:23:49
Y repartiendo la carga
00:23:51
Es más barato
00:23:53
Tener dos máquinas
00:23:55
Que no poner una máquina el doble de potente
00:23:57
El coste es mucho más alto
00:23:59
¿Pasamos a siguiente?
00:24:03
Bueno, se trataba esto
00:24:11
De exportar los contenidos
00:24:13
De Moodle a través
00:24:15
Tanto de los web services como a través
00:24:17
Del productor de Basic LTI
00:24:19
Y este experimento cual es
00:24:21
A partir de aquí empezamos a trabajar
00:24:23
Actualmente hay
00:24:45
Dos CVS
00:24:47
Donde se encuentran las APIs
00:24:49
Una es en el core de Moodle
00:24:51
En el head de Moodle 2.0
00:24:53
Y otra es en un servidor que tenemos en mi despacho
00:24:55
Que se llama potato.lsi.upc.edu
00:24:57
Allí hay un tracker
00:25:01
Donde creo que tenemos accesible
00:25:03
La versión de desarrollo que estamos usando nosotros
00:25:05
Y ahí es donde vamos añadiendo funcionalidades
00:25:07
Lo que sí que es verdad
00:25:09
Es que nosotros queremos abrir
00:25:11
Bien pronto
00:25:13
¿Qué cosas queréis hacer?
00:25:15
Necesitamos estas funciones
00:25:17
Y digo que necesitamos
00:25:19
Que esto se empiece a activar
00:25:21
Y que tendría que pasar en el foro de web services
00:25:23
De Moodle
00:25:25
Y abriremos algún hilo por allí
00:25:27
Porque nos cuesta convencer a veces
00:25:29
A la gente de core de Moodle
00:25:31
Que se incorporan novas funcionalidades
00:25:33
Digamos
00:25:35
La gente que desarrolla el core de Moodle
00:25:37
Son conservadores
00:25:39
Uy, esto tal
00:25:41
Uy, seguridad
00:25:43
Esto no
00:25:45
Y por tanto es muy importante que la gente diga
00:25:47
Ey, que yo quiero hacer esto, que necesitamos esta función
00:25:49
¿Alguien?
00:25:53
¿Tiene algún comentario o pregunta?
00:25:55
O vamos a ver ya
00:25:57
El código
00:25:59
Y todos los que no sois programadores vais a empezar a poder desconectar
00:26:01
¿Joan?
00:26:03
Ah, o tomar un café también
00:26:05
Bueno
00:26:07
Es espotato.lsi.pc.edu
00:26:11
Barra projects
00:26:13
Barra Moodle web services
00:26:15
Y aquí tenéis el tracker
00:26:17
Con el git
00:26:19
Y con el código
00:26:21
Y esto es altamente experimental
00:26:23
Porque Jordi y Miguel Ángel
00:26:25
Ayer se tiraron cuatro horas
00:26:27
Majas
00:26:29
Para poderlo hacer funcionar
00:26:31
Porque hace una semana Peter entró
00:26:33
En velocidad y dejó de funcionar todo
00:26:35
Y bueno
00:26:37
La cosa es bastante
00:26:39
Está bastante verde
00:26:43
Pero precisamente por esto
00:26:45
Porque el core no se está quieto
00:26:47
Pero está cogiendo velocidad
00:26:49
¿Jordi?
00:26:51
Teo
00:26:53
Pues vale, tenéis todos
00:26:57
Un portátil, ¿no?
00:26:59
Pues si os conectáis a esta url
00:27:01
Veréis al mío
00:27:05
Y os deberíais bajar el zip
00:27:07
Que hay aquí, que se llama
00:27:09
Mood09ws
00:27:11
Vale, espérate
00:27:15
Podría poner el zoom, pero bueno
00:27:17
Es http://192.168.11.169.8888
00:27:19
¿No lo coge?
00:27:31
A lo mejor me ha cambiado la IP
00:27:35
A ver
00:27:37
¿Sí?
00:27:39
¿Cómo?
00:27:45
¿Y por cable?
00:27:47
¿Por cable no llega?
00:27:49
¿Hay cable?
00:27:51
No sé, a lo mejor si lo enchufo
00:27:55
Ayer funcionaba
00:27:57
A ver
00:28:01
Dime
00:28:05
Lo he mirado, lo he mirado, espera
00:28:07
A ver
00:28:09
Toma, toma, toma
00:28:15
¿Me das?
00:28:17
Voy a buscar a vos
00:28:23
A ver
00:28:25
Buscar a alguien
00:28:31
No sé
00:28:41
Dime, busca a alguien
00:28:45
Por wales ayer iba
00:28:51
¿Tienes IP?
00:28:53
¿Tengo?
00:28:55
No tengo IP yo ahora
00:29:07
A ver
00:29:09
Necesito saber que es esta máquina
00:29:23
La IP es la 11.169
00:29:25
Bueno, tenéis todos
00:29:27
Tenéis todos el zip bajado
00:29:29
Vale, lo tenéis en el escritorio
00:29:31
Bueno, la intención es que abráis un navegador
00:29:33
Vale, y comprobéis que funciona
00:29:35
Y ponéis localhost
00:29:37
Que es el Apache
00:29:39
Entonces entráis en el navegador
00:29:41
Ponéis localhost
00:29:43
Y os tiene que salir
00:29:45
Eliteworks
00:29:47
Vale
00:29:49
Vale, pues si todos tenéis
00:30:05
El localhost funcionando con el Apache
00:30:07
Lo que tenéis que hacer es entrar en modo comando
00:30:09
Con un terminal
00:30:11
Y os tenéis que ir a la raíz
00:30:15
Os tenéis que ir a la raíz
00:30:17
Del directorio de Ubuntu
00:30:23
Y en el barra bar
00:30:29
Barra www
00:30:31
Poder hacer un directorio
00:30:33
En el sitio raíz de donde se consiguen los recursos
00:30:47
Vale
00:30:49
Si, pero como no tenéis privilegios
00:30:53
Primero lo que tenéis que hacer es un sudo su
00:30:55
Y el password es cmadrid
00:30:57
Sudo su
00:30:59
Y el password es cmadrid
00:31:01
Lo que habéis puesto a la entrada de password
00:31:03
Si?
00:31:05
Podéis?
00:31:07
Estáis todos en el barra bar barra www
00:31:09
Habéis hecho el sudo su
00:31:13
Podéis?
00:31:17
Vale, y aquí hacéis un directorio
00:31:19
Con el comando mkdir
00:31:21
Y dentro de ese directorio
00:31:23
Podéis copiar todos los archivos
00:31:25
Cmadrid
00:31:29
Hay alguien que esté perdido en el
00:31:41
Si, ósea y los archivos
00:31:43
Que habéis descomprimido en el escritorio
00:31:45
Los tenéis que copiar dentro de ese directorio
00:31:47
Que habéis creado en el www
00:31:49
El comando es cp
00:31:53
La fuente del fichero
00:31:55
La fuente del directorio
00:31:57
Y el destino del directorio
00:31:59
Ósea un ejemplo sería cp
00:32:01
Barra home
00:32:03
Madrid
00:32:05
Escritorio
00:32:07
Donde indicáis los archivos
00:32:09
Y la fuente
00:32:11
Y el destino perdón
00:32:13
Barra bar barra www
00:32:15
El directorio que habéis creado
00:32:17
Podéis hacerlo así?
00:32:19
Sería home
00:32:21
Barra Madrid
00:32:23
Barra escritorio
00:32:25
Escritorio en castellano
00:32:27
Y ahora entonces pondríais el directorio
00:32:29
Donde lo habéis descomprimido
00:32:31
Que es model webservice
00:32:33
Barra
00:32:35
Y le ponéis
00:32:37
Una barra y le pones un asterisco
00:32:39
Se copian todos los archivos que hay en ese directorio
00:32:41
Y luego
00:32:43
El destino que es barra bar
00:32:45
Barra bar
00:32:47
Barra www
00:32:49
Barra el directorio que habéis creado
00:32:51
Puede ser prueba, prueba webservice
00:32:53
Lo que hayáis puesto
00:32:55
Pon prueba
00:32:57
Pon prueba webservice y ya está
00:32:59
Al final del este
00:33:01
Pon después del barra bar
00:33:05
Pon prueba webservice
00:33:07
V2
00:33:10
Barra
00:33:12
Te falta una barra más
00:33:14
Para decir que va dentro
00:33:16
Vale?
00:33:18
Es más o menos el ejemplo este
00:33:23
Si habéis descomprimido el zip en el escritorio
00:33:27
Debería ser así
00:33:29
Alguien no ha podido?
00:33:31
Ou alguien ha podido
00:33:33
Háis podido?
00:33:35
Vale, entón dentro deste directorio
00:33:37
Vosotros estáis tendo todos os ficheros
00:33:41
Que agora modificaremos
00:33:43
E entón en el localhost
00:33:47
Lo único que tenéis que poner é
00:33:49
localhost barra
00:33:51
O nome do directorio que habéis creado
00:33:53
No navegador de Firefox
00:33:55
Podéis?
00:33:59
Vale isto?
00:34:01
Este?
00:34:03
Tenéis todos, no?
00:34:07
Todo mundo lo teña copiado, ya?
00:34:09
Vale, pues lo próximo
00:34:11
Sería que con el Firefox
00:34:13
O navegador que tengáis
00:34:15
Accedáis a localhost
00:34:17
Barra
00:34:19
Olvidaos de los ochos
00:34:21
Y la carpeta que la habéis llamado
00:34:25
mod09ws
00:34:27
O prueba
00:34:33
O como la habéis llamado
00:34:35
Tendría que salir suces
00:34:39
Lo tenéis, no?
00:34:45
Vale, pues esto es una especie
00:34:47
De mini cliente
00:34:49
Que aprovecha los web services
00:34:51
Para
00:34:53
Crear unos cuantos usuarios
00:34:55
Y unos cuantos cursos
00:34:57
Vale, es muy sencillo, lo hice viniendo en el tren
00:34:59
Y es muy simple
00:35:01
Como veis, solo pone suces
00:35:03
Y no hay ningún formulario
00:35:05
Ningún botón, ni nada
00:35:07
Vale, si
00:35:09
Examináis la carpeta
00:35:11
Que habéis copiado dentro de
00:35:13
www
00:35:15
Veréis que hay
00:35:17
Un archivo que se llama index.php
00:35:19
Hay un client.php
00:35:21
Hay un par de archivos
00:35:27
De valores separados por comas
00:35:29
No podrán editar los archivos
00:35:33
Si no hacen el chmod
00:35:35
Pongo el chmod
00:35:37
Vale, hazlo
00:35:39
¿Dónde tenéis el más?
00:35:47
¿El más o su más?
00:35:49
Un 777
00:35:51
¿Dónde tenéis el más?
00:35:53
¿Dónde tenéis el más?
00:35:55
¿Dónde tenéis el más?
00:35:57
Bueno, técnicamente, para que no tengáis problemas
00:36:15
De escritura y luego guardar los ficheros
00:36:17
En el directorio donde habéis descomprimido
00:36:19
Todos los... bueno
00:36:21
En el directorio del www
00:36:23
Donde habéis descomprimido los ficheros
00:36:25
Y los tenéis todos los .php
00:36:27
Deberíais ejecutar este comando
00:36:29
Da permisos de escritura, lectura a todos los usuarios
00:36:31
Así podréis guardar, salvar y...
00:36:33
Así a partir de ahora
00:36:39
No tendréis ningún problema
00:36:41
Ni para guardar, ni para ejecutar los scripts
00:36:43
¿Podéis?
00:36:45
¿Sabéis?
00:36:47
Ahora os tiene que salir todo rwx
00:36:49
En todos os lados
00:36:51
¿Si?
00:36:55
¿Si?
00:36:57
Bueno
00:37:01
Ahora ya podréis utilizar un editor de texto normal
00:37:03
Para editar el...
00:37:05
El contenido de los .php
00:37:07
¿Estáis podendo hacerlo?
00:37:13
Vale
00:37:15
Bueno
00:37:17
Ahora si queréis podéis editar
00:37:23
El índex .php
00:37:25
Que es donde...
00:37:27
Donde estará el ejemplo que vamos a ejecutar
00:37:29
¿Estáis?
00:37:41
¿Podéis?
00:37:43
Vale
00:37:45
Bueno la idea es que
00:37:47
Como todos vais a acceder contra el mismo
00:37:49
Moodle que está aquí
00:37:51
Que es el Moodle de servidor que tiene los webservice
00:37:53
La idea es que al principio de todo
00:37:55
Tenéis una categoría
00:37:57
Si subís al principio del fichero
00:37:59
Tenéis una categoría
00:38:01
Una variable que es categoría
00:38:03
Que es un string un poco raro
00:38:05
Si del índex .php
00:38:07
Vale y tenéis una
00:38:09
Variable que es categoría
00:38:11
La idea es que esa xxx
00:38:13
Es lo que se concatenará a todos los nombres de usuario
00:38:15
De perfil
00:38:17
De curso
00:38:19
Y como vais a acceder a todos al mismo Moodle
00:38:21
Y Moodle sabéis que tiene las restricciones
00:38:23
De emails
00:38:25
De nombres de curso
00:38:27
De shortnames
00:38:29
Para que no os repitáis
00:38:31
Yo lo que os recomiendo es que por filas
00:38:33
Esta sea la A, la B, la C
00:38:35
La D
00:38:37
Y a cada uno de vosotros
00:38:39
Ponéis la categoría como A
00:38:41
Y un número
00:38:43
Más que nada para que no coincidáis
00:38:45
Donde pone categoría xxx
00:38:47
Cada uno ponga
00:38:51
A, B, C
00:38:53
D, E, F
00:38:55
G, G
00:38:57
Y luego cada uno de vosotros
00:38:59
Aparte ponéis un número aleatorio
00:39:01
Después de la G
00:39:03
Yo que sé
00:39:05
Pongamos que
00:39:07
Yo pongo la W
00:39:09
Y soy la fila con la posición esta
00:39:11
Así ya sé que todos los nombres
00:39:13
Que tenga
00:39:15
Así todos podréis ver
00:39:27
Luego vuestros cursos
00:39:29
Y vuestras categorías creadas
00:39:31
Más que nada es que si no
00:39:33
Se os repetirán
00:39:35
Y os dará errores
00:39:37
Aquí como podéis ver
00:39:43
El servidor que definimos es el de Moodle
00:39:45
De este ordenador al que todos vais a acceder directamente
00:39:47
Y sobre los que vais a cargar
00:39:49
Los usuarios
00:39:51
Estáis...
00:39:53
¿Hay alguien que se haya perdido en estos pasos?
00:40:07
¿O que no haya llegado hasta aquí?
00:40:09
¿El qué?
00:40:15
Ah, el path completo del servidor
00:40:19
Espera
00:40:21
¿Coges tú el de este o que?
00:40:23
¿Si no?
00:40:25
Toma
00:40:27
Ok
00:40:29
¿Lo habéis puesto también?
00:40:31
El...
00:40:33
El servidor
00:40:35
Debéis copiar esto tal cual
00:40:37
Que es la dirección del Moodle que hay en ese portátil
00:40:39
Pues...
00:40:41
Lo primero que hay debajo de esto en el documento
00:40:43
Se incluye un par de librerías
00:40:45
¿Vale?
00:40:47
Una para...
00:40:49
Es un pequeño cliente
00:40:51
Vamos a utilizar en este caso
00:40:53
El conector REST
00:40:55
Para invocar a los servicios
00:40:57
Es un pequeño cliente que hice
00:40:59
Si lo queréis mirar
00:41:01
Es muy sencillo
00:41:03
Y debajo hay otra librería
00:41:05
Que se encarga de tratar
00:41:07
Archivos CSV
00:41:09
Que utilizaremos para
00:41:11
Abrir los archivos de
00:41:15
Usuarios y los archivos de cursos
00:41:17
Para leerlos y cargarlos
00:41:19
En el servidor
00:41:21
¿De acuerdo?
00:41:23
Debajo del todo
00:41:25
¿Dime?
00:41:27
¿Alguien decía algo?
00:41:29
Aquí debajo
00:41:31
Está la URL
00:41:33
Del servidor
00:41:35
En este caso
00:41:37
Los conectores están
00:41:39
En la carpeta de webservice
00:41:41
Dentro de Moodle
00:41:43
Hay un conector y un nombre del servidor
00:41:45
En este caso es el servidor REST
00:41:47
Y es una implementación sencilla
00:41:49
Que lleva Moodle para
00:41:51
Hacer pruebas del servicio
00:41:53
Aquí no tendrías que tocar nada
00:41:55
Lo que sí se tendría que
00:41:57
Está comentado
00:41:59
En vuestro código
00:42:01
Que sería crear la clase esta
00:42:03
De webservice REST es client
00:42:05
Para inicializar
00:42:07
El cliente
00:42:09
Que utilizaremos para invocar los servicios
00:42:11
O sea, añadiendo esta línea
00:42:13
Podríamos seguir para adelante
00:42:15
¿Lo tenemos ya?
00:42:17
¿Sí?
00:42:19
¿Alguien está
00:42:21
Atascado en algún lado?
00:42:23
¿No?
00:42:25
Vale, pues si os fijáis
00:42:27
Lo que deberíamos hacer es
00:42:35
Vosotros
00:42:37
Creo que tenéis comentado
00:42:39
Este trozo de aquí
00:42:41
¿Vale?
00:42:43
Donde se construyen los parámetros
00:42:45
Para invocar
00:42:47
Al servicio web
00:42:49
En este caso
00:42:51
La primera línea de ahí
00:42:53
Que pone content
00:42:55
Lo que hace es abrir el archivo separado por comas
00:42:57
Que tenéis en vuestro
00:42:59
En vuestro localhost
00:43:01
Y devolverlos
00:43:03
Lo que hay
00:43:05
Con el bucle lo que hacemos es
00:43:07
Coger los valores separados por comas
00:43:09
Y irlos metiéndolos dentro de una array
00:43:11
Para invocar el servicio
00:43:13
O sea, sería cuestión de copiar
00:43:15
Estas líneas
00:43:17
Para que
00:43:19
Podamos invocar al servicio
00:43:21
¿Lo tenéis todos esto copiado ya?
00:43:23
Si, supongo que si
00:43:25
¿Qué habéis hecho?
00:43:27
¿Qué habéis copiado?
00:43:29
¿Dime?
00:43:31
¿Por qué?
00:43:33
¿Esto qué es?
00:43:35
Esto es una array de array de array
00:43:37
¿Vale? Es un poco así como
00:43:39
Complicado pero bueno
00:43:41
Todas las funciones de localhost
00:43:43
Funcionan de esta manera
00:43:45
Primero
00:43:47
Le pasas
00:43:49
Una primera posición del array que es el objeto
00:43:51
Que queremos crear
00:43:53
Entonces tenemos
00:43:55
N posiciones donde hay
00:43:57
X campos que son los parámetros
00:43:59
Que va a recibir
00:44:01
La función
00:44:03
Entonces lo que hace la capa externa es iterar
00:44:05
En cada posición
00:44:07
De este array
00:44:09
Para obtener los parámetros
00:44:11
Y llamar X veces la función de crear usuario
00:44:13
¿Vale? En este caso
00:44:15
La API
00:44:17
Pide obligatoriamente estos campos
00:44:21
Para crear un usuario
00:44:23
Este es opcional
00:44:25
Para que veáis, si borráis uno destos no funcionaría
00:44:27
No podríais crear el usuario
00:44:29
Este es opcional, lo he puesto para que
00:44:31
Se viera normalmente
00:44:33
Todas las facultades usan el campo
00:44:35
Diginumber para identificar de alguna manera
00:44:37
Los usuarios internamente con el DNI
00:44:39
O con un número
00:44:41
De gestión interna
00:44:43
¿Vale? Lo próximo
00:44:45
Sería, o mejor ya muchos ya lo habéis puesto
00:44:47
Es hacerle llamada
00:44:49
Al servicio web
00:44:51
¿Lo habéis copiado? ¿Todos?
00:44:53
¿Si? Vale guay
00:44:55
En este caso lo que hace es
00:44:57
El cliente invoca
00:44:59
La operación
00:45:01
Moodle user create users con los parámetros que hemos construido
00:45:03
¿Por qué esto?
00:45:05
A ver, Moodle
00:45:07
Estamos invocando a una función de Moodle
00:45:09
User, estamos invocando a una operación
00:45:11
Que está dentro del componente de gestión
00:45:13
De usuarios
00:45:15
Y creo que Alberto, Miguel Ángelos
00:45:17
Enseñó el diagrama de componentes
00:45:19
Con el core, el external
00:45:21
Pues estamos invocando a una operación que está
00:45:23
En la capa del medio
00:45:25
De usuarios
00:45:27
Y invocamos a la operación de crear usuarios
00:45:29
En este caso
00:45:31
Si ya lo tenéis todo expuesto
00:45:33
Y vais
00:45:35
Al Firefox
00:45:39
Igual o que tengáis
00:45:43
Y en esta pantalla
00:45:45
Actualizáis, le dais al F5
00:45:47
En...
00:45:49
Debería daros suces igualmente
00:45:51
¿Dime?
00:45:53
No lo habías copiado, vale
00:45:59
Vale, ahora os podéis conectar
00:46:03
Al Moodle
00:46:05
Y con este usuario y password sois administradores
00:46:07
Y podréis, con Moodle y Moodle Pass
00:46:09
Vale
00:46:11
Y podréis ir a la pantalla de administración
00:46:13
Y ver que realmente se os han creado
00:46:15
Estes usuarios
00:46:17
Bueno, ahora
00:46:19
Cada uno de vosotros deberíais de poder acceder
00:46:21
A la...
00:46:23
A esta misma página que está accediendo
00:46:25
Jordi
00:46:27
Y entonces podéis
00:46:29
Loguearos con el mismo
00:46:31
Password de usuario
00:46:33
Que tenéis dentro de index.php
00:46:35
Vale, entonces
00:46:37
Cuando vayáis a la lista de usuarios
00:46:39
Authentic
00:46:41
Accounts, Worklist, exacto
00:46:43
Aquí podréis
00:46:45
Ver los usuarios
00:46:47
O sea, si filtráis ahora en el filtro de arriba
00:46:49
Aquí, show of banks
00:46:51
Podéis, por first name
00:46:55
Le podéis poner la categoría que habéis puesto vosotros
00:46:57
Vamos
00:46:59
El descriptor que habíais puesto
00:47:01
Dentro de vuestro index.php
00:47:03
Lo podéis utilizar para buscar los usuarios
00:47:05
Que vosotros habéis creado
00:47:07
Entonces técnicamente
00:47:09
Bueno, entonces salen un montón
00:47:13
Ah, vale, vale
00:47:17
No
00:47:21
Es first name
00:47:23
Sí, búscalo en first name y ya está
00:47:25
Aquí no
00:47:27
Vale, o sea, cada uno de vosotros
00:47:29
Buscáis vuestra constante
00:47:31
Que habéis definido en categoría
00:47:33
Y lo ponéis en first name
00:47:35
No en surname, tío
00:47:37
Lo has puesto en first name, tío
00:47:39
No en surname
00:47:41
Aquí
00:47:43
Ahí
00:47:45
¿Os salen los vuestros?
00:47:47
¿Hay alguien que no les salga, que no los encuentre?
00:47:49
¿Sí? ¿Están o no?
00:47:53
Tienes que borrar el filtro de arriba
00:47:55
No, remove selected
00:47:57
Vale, os tendrían que salir nueve usuarios
00:48:01
Más o menos así
00:48:05
¿Hay alguien que haya tenido problemas?
00:48:09
Espera, toma
00:48:11
¿Vas para allá?
00:48:13
¿Lo veis todos?
00:48:15
¿Sí?
00:48:17
Viene a ser
00:48:23
Lo mismo que para crear los usuarios
00:48:25
Lo que los parámetros son distintos
00:48:27
En este caso
00:48:29
Se haría un array de cursos
00:48:31
Con los parámetros de turno
00:48:33
Y se invocaría a la función call model
00:48:35
Curse, createCurses
00:48:37
Es muy parecido
00:48:39
Vamos allá y enseñaros una cosa antes de plegar
00:48:41
Que es como funciona esto por dentro
00:48:43
¿Qué pinta tiene un external?
00:48:49
Este no es
00:48:53
Vale, en la carpeta
00:49:11
Dentro de model
00:49:13
En la carpeta users
00:49:15
Se ha añadido
00:49:17
Un archivo nuevo que se llama
00:49:19
externallib.php
00:49:21
Lo mismo se ha hecho en la carpeta de cursos
00:49:23
En la carpeta
00:49:25
Del lesson
00:49:27
Del foro
00:49:29
De los componentes que nos parecian interesantes
00:49:31
A exportar servicios
00:49:33
De ellos
00:49:35
Y a poder dar acceso desde fuera
00:49:37
¿Cómo funciona esto?
00:49:39
Se han creado las funciones
00:49:41
En este caso la createUser que es la que hemos estado utilizando
00:49:43
Que
00:49:45
Trata los parámetros que recibe
00:49:47
Y acaba invocando
00:49:49
Las operaciones
00:49:51
De core
00:49:53
¿Vale?
00:49:59
Que toca para crear el usuario
00:50:01
Pero como
00:50:03
Se gestiona lo de los parámetros
00:50:05
Se han añadido funciones
00:50:07
Para cada uno de los servicios
00:50:11
Se ha creado una función que es
00:50:13
Nombre de la función
00:50:15
CreateUser
00:50:17
Parámetros
00:50:19
Igualmente returns
00:50:21
Donde se expone de forma estructurada
00:50:23
Como son los parámetros
00:50:25
Cuales son los parámetros que admite ese servicio
00:50:27
En este caso tenemos que
00:50:29
Para crear un usuario
00:50:31
Necesitamos
00:50:33
Estos cinco parámetros de forma
00:50:35
Obligatoria
00:50:37
El username, el password, el firstname, el lastname y el email
00:50:39
¿Vale? Estos de aquí
00:50:41
Los que están marcados como false
00:50:43
En esta zona son opcionales
00:50:45
Cada institución puede
00:50:47
Decidir utilizarlos o no utilizarlos
00:50:49
O por ejemplo directamente
00:50:51
Para configurar el tipo de autenticación
00:50:53
Para cambiarles el lang
00:50:55
Lo que sea
00:50:57
Entonces todos los externos
00:50:59
Funcionan de esta manera para definir los parámetros
00:51:01
Y de igual manera
00:51:03
Para definir
00:51:05
Como se devuelven
00:51:07
Los resultados
00:51:09
Cada invocación al servicio puede devolver
00:51:11
O lo que pone aquí
00:51:13
En este caso
00:51:15
Un array de arrays con ids
00:51:17
Los ids que se ha creado al usuario
00:51:19
O con mensajes
00:51:21
De excepción
00:51:23
Indicando si ha habido algún tipo de error
00:51:25
Si
00:51:27
El username ya existía
00:51:29
Si faltaba otro en la base de datos
00:51:31
Te lo indica
00:51:33
Si faltaba un parámetro obligatorio te lo indica
00:51:35
Si lo que es probar podéis hacer un printr
00:51:37
Del response
00:51:39
Y lo veréis en pantalla
00:51:41
En el Firefox
00:51:43
Directamente si le dais al control u para ver el código html
00:51:45
Lo veréis printado ahí
00:51:47
En ese caso
00:51:49
Hago un ejemplillo
00:51:51
Y ya lo dejaríamos aquí
00:51:53
En este caso he ejecutado la misma operación de antes
00:51:55
El primer curso que ha pedido
00:51:57
Crear ya existía
00:51:59
Con lo que me salta
00:52:01
El xml
00:52:03
Contiene una excepción
00:52:05
Que contiene un mensaje
00:52:07
Que es
00:52:09
Que el shortname ya está usado
00:52:11
Con lo que se puede
00:52:13
Tratar
00:52:15
Para recuperar el estado
00:52:17
De excepción
00:52:19
O mostrar un mensaje por pantalla
00:52:21
Para poder dar un poco
00:52:23
De que es lo que ha pasado
00:52:25
Dejame hacer la despedida
00:52:27
Dime
00:52:29
Pues ya por aquí acabamos
00:52:31
Bueno solamente deciros
00:52:33
Que es un trabajo que estamos todavía desarrollando
00:52:35
Que habrá más cambios
00:52:37
Pero que os hagáis una idea
00:52:39
De por lo menos cual es la arquitectura
00:52:41
Que es lo que se está planteando
00:52:43
Y sobre todo a donde nos va a permitir llegar
00:52:45
Que es lo más importante
00:52:47
Nos permite crecer de una manera
00:52:49
Nos permite desvincularnos completamente
00:52:51
De la versión de Moodle
00:52:53
Que se han comprometido a mantenerlas
00:52:55
Podremos tener versiones perdurables
00:52:57
En el tiempo de aplicaciones externas que utilicen los servicios de Moodle
00:52:59
Esto es todo y gracias por haber venido
00:53:01
- Valoración:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- Autor/es:
- Marc Alier, Jordi Piguillem y Miguel Angel Conde
- Subido por:
- EducaMadrid
- Licencia:
- Reconocimiento - No comercial - Sin obra derivada
- Visualizaciones:
- 4249
- Fecha:
- 24 de febrero de 2010 - 10:51
- Visibilidad:
- Público
- Enlace Relacionado:
- Comité Organizador Moodle Moot 09
- Descripción ampliada:
- Taller práctico sobre integración de Moodle con istemas externos con la capa de webservices deMoodle 2.0 y Moodle 1.9.
- Duración:
- 53′ 16″
- Relación de aspecto:
- 1.26:1
- Resolución:
- 448x356 píxeles
- Tamaño:
- 396.91 MBytes