예제 #1
0
def agentbehavior1(cola):
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt
    logger.info('Nos registramos en el servicio de registro')
    register_message(DSO.AgenteLogistico, AgenteLogistico, DirectoryAgent,
                     mss_cnt)
    fin = False
    while not fin:
        while cola.empty():
            pass
        gmess = cola.get()
        if gmess == 0:
            fin = True
        else:
            agenteVendedorExterno = directory_search_agent(
                DSO.AgenteVendedorExterno, AgenteLogistico, DirectoryAgent,
                mss_cnt)[0]
            content = gmess.value(predicate=RDF.type,
                                  object=AM2.Avisar_vendedor_externo_envio)
            grm = build_message(gmess,
                                perf=ACL.request,
                                sender=AgenteLogistico.uri,
                                receiver=agenteVendedorExterno.uri,
                                content=content,
                                msgcnt=mss_cnt)
            send_message(grm, agenteVendedorExterno.address)
            logger.info(
                'Se ha notificado al vendedor externo para que se encargue del envio'
            )
예제 #2
0
def agentbehavior1(cola):
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt
    logger.info('Nos registramos en el servicio de registro')
    register_message(DSO.AgenteAlmacen,AgenteAlmacen,DirectoryAgent,mss_cnt)
    fin = False
예제 #3
0
def agentbehavior1():
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt

    # Registramos el agente cliente
    logger.info('Nos registramos en el servicio de registro')
    gr = register_message(DSO.AgenteCliente, AgenteCliente, DirectoryAgent,
                          mss_cnt)
예제 #4
0
def agentbehavior1(cola):
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt
    # Registramos el agente
    gr = register_message(DSO.AgenteDevoluciones, AgenteDevoluciones,
                          DirectoryAgent, mss_cnt)

    # Escuchando la cola hasta que llegue un 0
    fin = False
예제 #5
0
def agentbehavior1(cola):
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt
    # Registramos el agente
    gr = register_message(DSO.AgenteRecomendador, AgenteRecomendador,
                          DirectoryAgent, mss_cnt)

    # Escuchando la cola hasta que llegue un 0
    fin = False
    schedule.every(25).seconds.do(recomendarProductosClientes)
    while not fin:
        while cola.empty():
            schedule.run_pending()
            pass
        v = cola.get()
        if v == 0:
            fin = True
        else:
            agenteCliente = directory_search_agent(DSO.AgenteCliente,
                                                   AgenteRecomendador,
                                                   DirectoryAgent, mss_cnt)[0]
            content = v.value(predicate=RDF.type,
                              object=AM2.Peticion_valoracion)
            grm = build_message(v,
                                perf=ACL.request,
                                sender=AgenteRecomendador.uri,
                                receiver=agenteCliente.uri,
                                content=content,
                                msgcnt=mss_cnt)
            gRespuesta = send_message(grm, agenteCliente.address)
            logger.info(
                'Se ha enviado una peticion de valoraciones al cliente')
            gValoraciones = Graph()
            for s in gRespuesta.subjects(RDF.type, AM2.Producto):
                print("------------------>%s" % (s))
                gValoraciones += gRespuesta.triples((s, None, None))
            addValoracionToBD(gValoraciones)
            logger.info('Se ha añadido la valoracion a la base de datos')
예제 #6
0
def agentbehavior1(cola):
    """
    Un comportamiento del agente

    :return:
    """
    global mss_cnt

    logger.info('Nos registramos en el servicio de registro')
    register_message(DSO.AgenteVentaProductos, AgenteVentaProductos,
                     DirectoryAgent, mss_cnt)
    fin = False
    while not fin:
        while cola.empty():
            pass
        v = cola.get()
        if v == 0:
            fin = True
        else:
            sj_avisar_recomendador = v.value(predicate=RDF.type,
                                             object=AM2.Nueva_compra)
            sj_solicitud_envio = v.value(predicate=RDF.type,
                                         object=AM2.Solicitud_envio)
            print("-------->sj_avisar_recomendador-->%s" %
                  (sj_avisar_recomendador))
            print("-------->sj_solicitud_envio-->%s" % (sj_solicitud_envio))

            if sj_solicitud_envio != None:
                #enviamos mensaje
                agenteLogistico = directory_search_agent(
                    DSO.AgenteLogistico, AgenteVentaProductos, DirectoryAgent,
                    mss_cnt)[0]
                grm = build_message(v,
                                    perf=ACL.request,
                                    sender=AgenteVentaProductos.uri,
                                    receiver=agenteLogistico.uri,
                                    content=sj_solicitud_envio,
                                    msgcnt=mss_cnt)
                logger.info(
                    'Se ha enviado al centro logístico la solicitud de envio')
                gr = send_message(grm, agenteLogistico.address)
                logger.info(
                    'Se ha recibido la respuesta del centro logístico, notificando al cliente'
                )

                agenteCliente = directory_search_agent(DSO.AgenteCliente,
                                                       AgenteVentaProductos,
                                                       DirectoryAgent,
                                                       mss_cnt)[0]
                msgdic = get_message_properties(gr)
                content = msgdic['content']
                confirmacion = gr.value(subject=content, predicate=RDF.type)
                if confirmacion == AM2.Confirmacion_envio:
                    logger.info("Confirmacion del envio")
                elif confirmacion == AM2.Confirmacion_envio_externo:
                    logger.info("Confirmacion del envio externo")
                elif confirmacion == AM2.Confirmacion_envio_externo_interno:
                    logger.info("Confirmacion del envio externo e interno")
                gmess = Graph()
                sj_contenido = AM2[AgenteVentaProductos.name +
                                   '-Factura_Compra-' + str(mss_cnt)]
                gmess.add((sj_contenido, RDF.type, AM2.Emitir_factura))
                grm = build_message(gmess,
                                    perf=ACL.request,
                                    sender=AgenteVentaProductos.uri,
                                    receiver=agenteCliente.uri,
                                    content=sj_contenido,
                                    msgcnt=mss_cnt)
                send_message(grm, agenteCliente.address)
                logger.info(
                    'Se han enviado los detalles de la entrega al cliente')
            elif sj_avisar_recomendador != None:
                #avisar al recomendador
                agenteRecomendador = directory_search_agent(
                    DSO.AgenteRecomendador, AgenteVentaProductos,
                    DirectoryAgent, mss_cnt)[0]
                grm = build_message(v,
                                    perf=ACL.request,
                                    sender=AgenteVentaProductos.uri,
                                    receiver=agenteRecomendador.uri,
                                    content=sj_avisar_recomendador,
                                    msgcnt=mss_cnt)
                send_message(grm, agenteRecomendador.address)
                logger.info(
                    'El AgenteRecomendador ha sido notificado de la compra')