
camunda.SymphonyTaskClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of symphony-camunda-client Show documentation
Show all versions of symphony-camunda-client Show documentation
Symphony Camunda Client provided by Symphony Platform Solutions team
The newest version!
package camunda;
import camunda.model.CamundaConfig;
import camunda.model.parameter.MessageParameters;
import camunda.model.parameter.RoomParameters;
import clients.SymBotClient;
import exceptions.SymClientException;
import model.*;
import org.camunda.bpm.client.ExternalTaskClient;
import javax.ws.rs.core.NoContentException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SymphonyTaskClient {
private SymBotClient botClient;
private ExternalTaskClient camundaClient;
private CamundaConfig config;
public SymphonyTaskClient(SymBotClient botClient, CamundaConfig config) {
this.botClient = botClient;
this.config = config;
this.camundaClient = ExternalTaskClient.create()
.baseUrl(config.getCamundaURL())
.build();
}
public void initCreateRoomTask(){
camundaClient.subscribe("symphony-create-room")
.lockDuration(1000)
.handler((externalTask, externalTaskService) -> {
Room room = new Room();
room.setName(externalTask.getVariable(RoomParameters.NAME));
room.setDescription(externalTask.getVariable(RoomParameters.DESCRIPTION));
if(externalTask.getVariable(RoomParameters.MEMBERSCANINVITE)!=null){
room.setMembersCanInvite((Boolean) externalTask.getVariableTyped(RoomParameters.MEMBERSCANINVITE).getValue());
}
if(externalTask.getVariable(RoomParameters.DISCOVERABLE)!=null){
room.setDiscoverable((Boolean) externalTask.getVariableTyped(RoomParameters.DISCOVERABLE).getValue());
}
if(externalTask.getVariable(RoomParameters.CROSSPOD)!=null){
room.setCrossPod((Boolean) externalTask.getVariableTyped(RoomParameters.CROSSPOD).getValue());
}
if(externalTask.getVariable(RoomParameters.VIEWHISTORY)!=null){
room.setViewHistory((Boolean) externalTask.getVariableTyped(RoomParameters.VIEWHISTORY).getValue());
}
if(externalTask.getVariable(RoomParameters.COPYPROTECTED)!=null){
room.setCopyProtected((Boolean) externalTask.getVariableTyped(RoomParameters.COPYPROTECTED).getValue());
}
if(externalTask.getVariable(RoomParameters.PUBLIC)!=null){
room.setMembersCanInvite((Boolean)externalTask.getVariableTyped(RoomParameters.PUBLIC).getValue());
}
if(externalTask.getVariable(RoomParameters.READONLY)!=null){
room.setMembersCanInvite((Boolean)externalTask.getVariableTyped(RoomParameters.READONLY).getValue());
}
List usersToAdd = null;
if(externalTask.getVariableTyped(RoomParameters.MEMBERSTOADD)!=null){
usersToAdd = (List) externalTask.getVariableTyped(RoomParameters.MEMBERSTOADD).getValue();
}
RoomInfo roomInfo;
try {
roomInfo = botClient.getStreamsClient().createRoom(room);
Map outVariables = new HashMap<>();
outVariables.put(RoomParameters.ID, roomInfo.getRoomSystemInfo().getId());
if(usersToAdd!=null) {
for (String user : usersToAdd) {
botClient.getStreamsClient().addMemberToRoom(roomInfo.getRoomSystemInfo().getId(), botClient.getUsersClient().getUserFromEmail(user, false).getId());
}
}
externalTaskService.complete(externalTask,outVariables);
} catch (SymClientException | NoContentException e) {
e.printStackTrace();
}
}).open();
}
public void initSendRoomMessageTask(){
camundaClient.subscribe("symphony-send-room-message")
.lockDuration(1000)
.handler((externalTask, externalTaskService) -> {
OutboundMessage message = new OutboundMessage();
message.setMessage(externalTask.getVariable(MessageParameters.MESSAGECONTENT));
try {
InboundMessage inboundMessage = botClient.getMessagesClient().sendMessage(externalTask.getVariable(MessageParameters.ROOMMESSAGERECIPIENTID),message);
Map outVariables = new HashMap<>();
outVariables.put("sentMessageId", inboundMessage.getMessageId());
externalTaskService.complete(externalTask,outVariables);
} catch (SymClientException e) {
e.printStackTrace();
}
}).open();
}
public void initSendIMMessageTask(){
camundaClient.subscribe("symphony-send-im-message")
.lockDuration(1000)
.handler((externalTask, externalTaskService) -> {
OutboundMessage message = new OutboundMessage();
message.setMessage(externalTask.getVariable(MessageParameters.MESSAGECONTENT));
try {
InboundMessage inboundMessage = botClient.getMessagesClient().sendMessage(botClient.getStreamsClient().getUserIMStreamId(botClient.getUsersClient().getUserFromEmail(externalTask.getVariable(MessageParameters.IMMESSAGERECIPIENTEMAIL),false).getId()),message);
Map outVariables = new HashMap<>();
outVariables.put("sentMessageId", inboundMessage.getMessageId());
externalTaskService.complete(externalTask,outVariables);
} catch (SymClientException e) {
e.printStackTrace();
} catch (NoContentException e) {
e.printStackTrace();
}
}).open();
}
public void initManageRoomTask(){
camundaClient.subscribe("symphony-manage-room")
.lockDuration(1000)
.handler((externalTask, externalTaskService) -> {
String roomId = externalTask.getVariable(RoomParameters.ID);
Room room = new Room();
if(externalTask.getVariable(RoomParameters.NAME)!=null){
room.setName(externalTask.getVariable(RoomParameters.NAME));
}
if(externalTask.getVariable(RoomParameters.DESCRIPTION)!=null){
room.setDescription(externalTask.getVariable(RoomParameters.DESCRIPTION));
}
if(externalTask.getVariable(RoomParameters.MEMBERSCANINVITE)!=null){
room.setMembersCanInvite((Boolean) externalTask.getVariableTyped(RoomParameters.MEMBERSCANINVITE).getValue());
}
if(externalTask.getVariable(RoomParameters.DISCOVERABLE)!=null){
room.setDiscoverable((Boolean) externalTask.getVariableTyped(RoomParameters.DISCOVERABLE).getValue());
}
if(externalTask.getVariable(RoomParameters.CROSSPOD)!=null){
room.setCrossPod((Boolean) externalTask.getVariableTyped(RoomParameters.CROSSPOD).getValue());
}
if(externalTask.getVariable(RoomParameters.VIEWHISTORY)!=null){
room.setViewHistory((Boolean) externalTask.getVariableTyped(RoomParameters.VIEWHISTORY).getValue());
}
if(externalTask.getVariable(RoomParameters.COPYPROTECTED)!=null){
room.setCopyProtected((Boolean) externalTask.getVariableTyped(RoomParameters.COPYPROTECTED).getValue());
}
List usersToAdd = null;
if(externalTask.getVariableTyped(RoomParameters.MEMBERSTOADD)!=null){
usersToAdd = (List) externalTask.getVariableTyped(RoomParameters.MEMBERSTOADD).getValue();
}
List usersToRemove = null;
if(externalTask.getVariableTyped(RoomParameters.MEMBERSTOREMOVE)!=null){
usersToRemove = (List) externalTask.getVariableTyped(RoomParameters.MEMBERSTOREMOVE).getValue();
}
RoomInfo roomInfo;
try {
roomInfo = botClient.getStreamsClient().updateRoom(roomId, room);
if(usersToAdd!=null) {
for (String user : usersToAdd) {
botClient.getStreamsClient().addMemberToRoom(roomInfo.getRoomSystemInfo().getId(), botClient.getUsersClient().getUserFromEmail(user, false).getId());
}
}
if(usersToRemove!=null) {
for (String user : usersToRemove) {
botClient.getStreamsClient().removeMemberFromRoom(roomInfo.getRoomSystemInfo().getId(), botClient.getUsersClient().getUserFromEmail(user, false).getId());
}
}
externalTaskService.complete(externalTask);
} catch (SymClientException | NoContentException e) {
e.printStackTrace();
}
}).open();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy