Fórum Sistema Help Desk #460773
11/11/2013
0
Estou fazendo o exemplo da revista Java: [url]https://www.devmedia.com.br/help-desk-com-javaserver-faces-2/28713[/url] e gostaria de saber se alguém já conseguiu fazer um modalidade de Help Desk que suportasse vários atendimentos e não somente um por vez. Do mesmo jeito que hoje está o exemplo, porém permitindo atender mais pessoas.
Se alguém puder me ajudar.
Obrigado
Josivan Laskoski
Curtir tópico
+ 0Posts
12/11/2013
Josivan Laskoski
Alguém tem alguma sugestão?
Obrigado
Gostei + 0
12/11/2013
[desativado] Gonçalves
me dê maiores detalhes para ver se eu consigo te ajudar.
eu não consigo ler o artigo que você falou porque não sou MVP no site. O que você quer exatamente? Criar um sistema de helpdesk?
Gostei + 0
12/11/2013
Josivan Laskoski
A parte de atender somente um cliente por vez está ok, o proprio exemplo trabalha muito bem, porém preciso agora conseguir trabalhar com multiplos usuarios
O exemplo traz a seguinte classe:
@ManagedBean(name = "chatMb")
@SessionScoped
public class ChatBean implements Serializable {
@ManagedProperty(value = "#")
private HelpDeskManagerLocatorBean managerLocator;
private String message;
private String chatId;
private String userName;
public HelpDeskManagerLocatorBean getManagerLocator() {
return managerLocator;
}
public void setManagerLocator(HelpDeskManagerLocatorBean managerLocator) {
this.managerLocator = managerLocator;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getChatId() {
return chatId;
}
public void setChatId(String chatId) {
this.chatId = chatId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public boolean isReady() {
return managerLocator.getManager().hasChat(getChatId());
}
public Chat getChat() {
return managerLocator.getManager().getChat(getChatId());
}
public void close() {
managerLocator.getManager().closeChat(getChatId());
reset(null, null);
}
public void sendMessage() {
getChat().addMessage(getMessage(), getUserName());
setMessage("");
}
public List<Message> getMessages() {
List<Message> result = null;
if (isReady()) {
result = getChat().getMessages();
}
return result;
}
public void reset(String chatId, String userName) {
setChatId(chatId);
setUserName(userName);
setMessage("");
}
}
E o xhtml que trabalha com o chat é o seguinte
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Chat</title>
</h:head>
<h:body>
<h:form>
<p:panel header="Chat">
<p:poll update="pnlMessages pnlChatClosed pnlButtons" interval="1" />
<p:outputPanel id="pnlMessages">
<p:outputPanel rendered="#{chatMb.ready}">
<div id="chat" style="height: 250px; width: 100%; overflow: auto; border: 1px solid #000;">
<ui:repeat var="message" value="#{chatMb.messages}">
<div class="msg"> <h:outputText value="#{message.date}" />
<strong><h:outputText value="#{message.author}" /> </strong>:
<h:outputText value="#{message.content}" />
</div>
</ui:repeat>
</div>
</p:outputPanel>
</p:outputPanel>
<br />
<p:outputPanel id="pnlChat">
<p:outputPanel>
<h:panelGrid columns="2">
<p:inputTextarea id="txaMessage" rows="4" cols="40" style="width: 350px" counter="ctrMessage" maxlength="100" value="#{chatMb.message}" counterTemplate=" caracteres restantes." autoResize="false" />
<h:panelGrid id="pnlButtons" columns="1">
<p:commandButton value="Enviar!" style="width: 100px;" disabled="#{not chatMb.ready}" action="#{chatMb.sendMessage}" update="txaMessage" />
<p:commandButton value="Sair" action="#{chatMb.close}" disabled="#{not chatMb.ready}" style="width: 100px;" oncomplete="window.close();" update="pnlChat" />
</h:panelGrid>
<h:outputText id="ctrMessage" />
</h:panelGrid>
</p:outputPanel>
<p:outputPanel id="pnlChatClosed">
<h:outputText value="Chat Fechado!" rendered="#{not chatMb.ready}" />
</p:outputPanel>
</p:outputPanel>
</p:panel>
</h:form>
</h:body>
</html>
O meu problema nesse exemplo está na seguinte situação: O metodo é invocado toda vez que o atendente quer atender um cliente, ou seja, quando o atendente quer atender um segundo cliente o metodo reset é disparado e limpado as variaveis colocando o nome do ultimo cliente, ou seja, o primeiro cliente que foi atendido "se perdeu" pois a referencia para envio de msg está nesse nome, agora o atendente para de mandar msg para o primeiro cliente so consegue mandar para o segundo cliente.
E o segundo problema é que essa classe é usada na abertura de chat tanto para o cliente quanto para o atendente, ou seja, toda vez que é um novo cliente iniciando um chat, a classe para aquele novo cliente é instanciada do zero.
Então nao sei como faço para manter uma lista de atendente x cliente"S".
Não sei se consegui me explicar, mas esse é o meu problema
Obrigado!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)