Class ConversationServiceImpl
java.lang.Object
org.flowable.common.engine.impl.service.CommonServiceImpl<C>
org.flowable.common.engine.impl.service.CommonEngineServiceImpl<EngageEngineConfiguration>
com.flowable.engage.engine.impl.conversation.ConversationServiceImpl
- All Implemented Interfaces:
ConversationService
public class ConversationServiceImpl
extends CommonEngineServiceImpl<EngageEngineConfiguration>
implements ConversationService
The default conversation service implementation using commands to provide the necessary functionality.
- Author:
- Micha Kiener, Filip Hrisafov, Anatolii Balakiriev
-
Field Summary
FieldsFields inherited from class org.flowable.common.engine.impl.service.CommonEngineServiceImpl
commandExecutor
Fields inherited from class org.flowable.common.engine.impl.service.CommonServiceImpl
configuration
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addParticipants
(String conversationId, Collection<String> participants) Adds the given participants to the conversation with the given idvoid
Adds the provided tag to the specified conversation.void
addTags
(String conversationId, Collection<String> tags) Tag the conversation with providedtags
void
Archives the conversation with the given id.void
assignToGroup
(String conversationId, String assignedGroupId) Assigns the conversation to a group of users (set the assignedGroupId property).void
assignToUser
(String conversationId, String assignedUserId) Assigns the conversation to a user (set the assigneeId property).void
changeOwner
(String conversationId, String ownerUserId) Changes an owner of the conversation.long
countConversationsWithLastMessageBetween
(Date from, Date until, boolean includePrivateMessages, boolean includeStickMessages) TODO: this might be not the right service Number of conversations which received new messages within a given time frame.Returns a conversation builder used to start newConversation
objects.createConversationParticipantBuilder
(String conversationId) Creates a new participant builder to add or remove participants to / from a conversation with various extended options mainly on message visibility.Creates a new conversation query as a builder where you can add predicates in order to query for conversations.Creates a new conversation status query, that can be used to get the different unread statuses for a conversation.Creates a new user query to request user ids involved in a specific conversation (e.g.void
deleteConversation
(String conversationId) Deletes a conversation and all related data (messages, unread counts, etc.).boolean
Finds the conversation with the given id.findByIdWithIdentityLinks
(String conversationId) Finds the conversation with the given id, with the identity links already prefetched.findByIdWithIdentityLinksAndVariables
(String conversationId) Finds the conversation with the given id, with the identity links and variables already prefetched.findConversationsWithLastMessageBetween
(Date from, Date until, boolean includePrivateMessages, boolean includeStickMessages) TODO: this might be not the right service Finds conversations which received new messages within a given time frame.getVariable
(String conversationId, String variableName) The variable value.getVariables
(String conversationId) All variables visible from the given conversation.void
linkConversationWithUserAccount
(String conversationId, String userAccountId) Set the id of the user account that is linked with this conversation.void
muteConversation
(String conversationId, String userId) Mute the conversation with the givenconversationId
for the user with the givenuserId
.void
removeAssignedGroup
(String conversationId) Removes an assigned group from a conversation (sets the assignedGroupId proeprty to null).void
removeAssignedUser
(String conversationId) Removes an assigned user from a conversation.void
removeParticipants
(String conversationId, Collection<String> participants) Removes the given participants to the conversation with the given idvoid
Removes the provided tag from the specified conversation, if it exists.void
removeTags
(String conversationId, Collection<String> tags) Remove the providedtags
from the conversationvoid
removeUserAccountFromConversation
(String conversationId) Deprecated.void
removeUserAccountFromConversation
(String userAccountId, String conversationId) Remove the mapping between the user account and the given conversation.void
removeUserAccountsFromConversation
(String conversationId) Remove all the user account mappings with this conversation.void
removeVariable
(String conversationId, String variableName) Removes a variable for a conversation.void
removeVariables
(String conversationId, Collection<String> variableNames) Removes variables for a conversation.void
Reopens the archived conversation with the given id.setReference
(String conversationId, String referenceId, String referenceType, String referenceDefinitionId) Set the optional reference for a conversation like a case or process where the conversation is liked to.void
setVariable
(String conversationId, String variableName, Object value) Update or create a variable for a conversation.void
setVariables
(String conversationId, Map<String, Object> variables) Update or create given variables for a conversation.void
starConversation
(String conversationId, String userId) Star the conversation with the givenconversationId
for the user with the givenuserId
startConversation
(ConversationBuilderImpl conversationBuilder) startConversationWithReuse
(ConversationBuilderImpl conversationBuilder) void
unmuteConversation
(String conversationId, String userId) Unmute the conversation with the giveconversationId
for the user with the giveuserId
.long
unreadMessagesCount
(String userId, String conversationId) The unread data count for the user with iduserId
in the conversation with idconversationId
void
unstarConversation
(String conversationId, String userId) Un-stars the conversation with the givenconversationId
for the user with the givenuserId
updateAvatarId
(String conversationId, String avatarId) Updates the conversation avatar id for the given conversation.updateDescription
(String conversationId, String description) Updates the conversation description for the given conversation.updateName
(String conversationId, String name) Updates the conversation name (title) for the given conversation.void
userTyping
(String conversationId, String userId) Information that a user with iduserId
is typing in the conversation with idconversationId
Methods inherited from class org.flowable.common.engine.impl.service.CommonEngineServiceImpl
getCommandExecutor, setCommandExecutor
Methods inherited from class org.flowable.common.engine.impl.service.CommonServiceImpl
getConfiguration
-
Field Details
-
IDENTITY_LINK_CONVERSATION_SCOPE
- See Also:
-
-
Constructor Details
-
ConversationServiceImpl
-
-
Method Details
-
createConversationQuery
Description copied from interface:ConversationService
Creates a new conversation query as a builder where you can add predicates in order to query for conversations. If you search by the conversation id only you should better useConversationService.findById(String)
because it takes the cache into account.- Specified by:
createConversationQuery
in interfaceConversationService
- Returns:
- the conversation query builder
-
createConversationBuilder
Description copied from interface:ConversationService
Returns a conversation builder used to start newConversation
objects. Make sure to always explicitly set the sub type of the conversation as it is a mandatory information.- Specified by:
createConversationBuilder
in interfaceConversationService
- Returns:
- the conversation builder
-
createConversationParticipantBuilder
Description copied from interface:ConversationService
Creates a new participant builder to add or remove participants to / from a conversation with various extended options mainly on message visibility.- Specified by:
createConversationParticipantBuilder
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to manage participants through the builder- Returns:
- a conversation participant builder
-
createConversationUserQuery
Description copied from interface:ConversationService
Creates a new user query to request user ids involved in a specific conversation (e.g. participants or all involved users, etc).- Specified by:
createConversationUserQuery
in interfaceConversationService
- Returns:
- the conversation query builder
-
createConversationStatusQuery
Description copied from interface:ConversationService
Creates a new conversation status query, that can be used to get the different unread statuses for a conversation.- Specified by:
createConversationStatusQuery
in interfaceConversationService
- Returns:
- the conversation status query builder
-
unreadMessagesCount
Description copied from interface:ConversationService
The unread data count for the user with iduserId
in the conversation with idconversationId
- Specified by:
unreadMessagesCount
in interfaceConversationService
- Parameters:
userId
- the id of the user for which the unread data count is neededconversationId
- the id of the conversation for which the count is needed- Returns:
- the number of unread messages for the given user in the given conversation
-
startConversation
-
startConversationWithReuse
-
exists
- Specified by:
exists
in interfaceConversationService
- Returns:
- Checks if the given conversation exists.
-
setReference
public Conversation setReference(String conversationId, String referenceId, String referenceType, String referenceDefinitionId) Description copied from interface:ConversationService
Set the optional reference for a conversation like a case or process where the conversation is liked to.- Specified by:
setReference
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to set its referencereferenceId
- the id of the referenced work itemreferenceType
- the type of the referenced work itemreferenceDefinitionId
- the optional definition id of the referenced work item- Returns:
- the modified conversation retrieved from the database
-
updateName
Description copied from interface:ConversationService
Updates the conversation name (title) for the given conversation.- Specified by:
updateName
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to change its namename
- title of the conversation, it can be also be null or empty- Returns:
- modified conversation retrieved from database
-
updateDescription
Description copied from interface:ConversationService
Updates the conversation description for the given conversation.- Specified by:
updateDescription
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to change its descriptiondescription
- the description of the conversation, it can be also be null or empty- Returns:
- modified conversation retrieved from database
-
updateAvatarId
Description copied from interface:ConversationService
Updates the conversation avatar id for the given conversation.- Specified by:
updateAvatarId
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to change its descriptionavatarId
- the avatar id of the conversation, it can be also be null or empty- Returns:
- modified conversation retrieved from database
-
archive
Description copied from interface:ConversationService
Archives the conversation with the given id. You can't post anything to an archived conversation, the only thing left to do is re-opening it.- Specified by:
archive
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to be archived
-
reopen
Description copied from interface:ConversationService
Reopens the archived conversation with the given id.- Specified by:
reopen
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to be reopened
-
addParticipants
Description copied from interface:ConversationService
Adds the given participants to the conversation with the given id- Specified by:
addParticipants
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to which the participants needs to be addedparticipants
- the ids of the participants that need to be added
-
removeParticipants
Description copied from interface:ConversationService
Removes the given participants to the conversation with the given id- Specified by:
removeParticipants
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation from which the participants need to be removedparticipants
- the ids of the participants that need to be removed
-
assignToGroup
Description copied from interface:ConversationService
Assigns the conversation to a group of users (set the assignedGroupId property).- Specified by:
assignToGroup
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to be assigned to a groupassignedGroupId
- the id of the group to assign the conversation to
-
removeAssignedGroup
Description copied from interface:ConversationService
Removes an assigned group from a conversation (sets the assignedGroupId proeprty to null).- Specified by:
removeAssignedGroup
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to remove the assgined group from
-
assignToUser
Description copied from interface:ConversationService
Assigns the conversation to a user (set the assigneeId property).- Specified by:
assignToUser
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to be assigned to a userassignedUserId
- the id of the user to assign the conversation to
-
removeAssignedUser
Description copied from interface:ConversationService
Removes an assigned user from a conversation.- Specified by:
removeAssignedUser
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversatoin to remove the assigned user (set the assigneeId ot null).
-
changeOwner
Description copied from interface:ConversationService
Changes an owner of the conversation.- Specified by:
changeOwner
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to change an owner inownerUserId
- the id of the user to become a new owner of this conversation
-
userTyping
Description copied from interface:ConversationService
Information that a user with iduserId
is typing in the conversation with idconversationId
- Specified by:
userTyping
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation in which the user is typinguserId
- the id of the user that is doing the typing
-
deleteConversation
Description copied from interface:ConversationService
Deletes a conversation and all related data (messages, unread counts, etc.).- Specified by:
deleteConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation which needs to be deleted.
-
addTags
Description copied from interface:ConversationService
Tag the conversation with providedtags
- Specified by:
addTags
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation to which the tags need to be addedtags
- the tags that should be added to the conversation
-
addTag
Description copied from interface:ConversationService
Adds the provided tag to the specified conversation.- Specified by:
addTag
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation where the tag should be addedtag
- the tag to be added, must not be null or empty
-
removeTags
Description copied from interface:ConversationService
Remove the providedtags
from the conversation- Specified by:
removeTags
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation from which tags need to be removedtags
- the tags that need to be removed from the conversation
-
removeTag
Description copied from interface:ConversationService
Removes the provided tag from the specified conversation, if it exists.- Specified by:
removeTag
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversatoin to remove the provided tag fromtag
- the tag to be removed
-
countConversationsWithLastMessageBetween
public long countConversationsWithLastMessageBetween(Date from, Date until, boolean includePrivateMessages, boolean includeStickMessages) Description copied from interface:ConversationService
TODO: this might be not the right service Number of conversations which received new messages within a given time frame. If you are only interested in general messages (neither private nor sticky messages) it's better to useConversationQuery
and build a query withConversationQuery.lastMessageAfter(Date)
orConversationQuery.lastMessageBefore(Date)
This method is needed if private or sticky messages are also to be taken account, becauseConversation.getLastMessageTime()
will not be updated for private or sticky messages.- Specified by:
countConversationsWithLastMessageBetween
in interfaceConversationService
- Parameters:
from
- start of the time frame (optional)until
- end of the time frame (optional)includePrivateMessages
- true if private messages should also be consideredincludeStickMessages
- true if sticky messages should also be considered- Returns:
- count of conversations with new messages within given time frame
-
findConversationsWithLastMessageBetween
public List<Conversation> findConversationsWithLastMessageBetween(Date from, Date until, boolean includePrivateMessages, boolean includeStickMessages) Description copied from interface:ConversationService
TODO: this might be not the right service Finds conversations which received new messages within a given time frame. If you are only interested in general messages (neither private nor sticky messages) it's better to useConversationQuery
and build a query withConversationQuery.lastMessageAfter(Date)
orConversationQuery.lastMessageBefore(Date)
This method is needed if private or sticky messages are also to be taken account, becauseConversation.getLastMessageTime()
will not be updated for private or sticky messages.- Specified by:
findConversationsWithLastMessageBetween
in interfaceConversationService
- Parameters:
from
- start of the time frame (optional)until
- end of the time frame (optional)includePrivateMessages
- true if private messages should also be consideredincludeStickMessages
- true if sticky messages should also be considered- Returns:
- list of conversations with new messages withing given time frame
-
findByIdWithIdentityLinks
Description copied from interface:ConversationService
Finds the conversation with the given id, with the identity links already prefetched.- Specified by:
findByIdWithIdentityLinks
in interfaceConversationService
-
findByIdWithIdentityLinksAndVariables
Description copied from interface:ConversationService
Finds the conversation with the given id, with the identity links and variables already prefetched.- Specified by:
findByIdWithIdentityLinksAndVariables
in interfaceConversationService
-
findById
Description copied from interface:ConversationService
Finds the conversation with the given id. If you are interested in the conversation owner, participants etc. you must callConversationService.findByIdWithIdentityLinks(String)
.- Specified by:
findById
in interfaceConversationService
- Parameters:
conversationId
- the conversation id- Returns:
- the conversation without any identity links
-
linkConversationWithUserAccount
Description copied from interface:ConversationService
Set the id of the user account that is linked with this conversation. If a conversation is already linked with a user account then this operation will add another link.- Specified by:
linkConversationWithUserAccount
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be updateduserAccountId
- the id of the user account that should be linked with the conversation
-
removeUserAccountFromConversation
Deprecated.Description copied from interface:ConversationService
Remove the id of the user account from this conversation. If the conversation is not linked with a user already then this method does nothing. If the conversation is linked to more than one account then this method will throw an exception.- Specified by:
removeUserAccountFromConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be updated
-
removeUserAccountFromConversation
Description copied from interface:ConversationService
Remove the mapping between the user account and the given conversation. If the conversation is not linked with the user account then this method does nothing- Specified by:
removeUserAccountFromConversation
in interfaceConversationService
- Parameters:
userAccountId
- the id of the user account that should be removedconversationId
- the id of the conversation that should be updated
-
removeUserAccountsFromConversation
Description copied from interface:ConversationService
Remove all the user account mappings with this conversation. If the conversation is not linked with a user already then this method does nothing.- Specified by:
removeUserAccountsFromConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be updated
-
getVariables
Description copied from interface:ConversationService
All variables visible from the given conversation.- Specified by:
getVariables
in interfaceConversationService
- Parameters:
conversationId
- id of the conversation, cannot be null.- Returns:
- the variables or an empty map if no such variables are found.
-
getVariable
Description copied from interface:ConversationService
The variable value. Returns null when no variable value is found with the given name or when the value is set to null.- Specified by:
getVariable
in interfaceConversationService
- Parameters:
conversationId
- id of conversation, cannot be null.variableName
- name of variable, cannot be null.- Returns:
- the variable value or null if the variable is undefined or the value of the variable is null.
-
setVariable
Description copied from interface:ConversationService
Update or create a variable for a conversation.- Specified by:
setVariable
in interfaceConversationService
- Parameters:
conversationId
- id of conversation to set variable in, cannot be null.variableName
- name of variable to set, cannot be null.value
- value to set. When null is passed, the variable is not removed, only it's value will be set to null.
-
setVariables
Description copied from interface:ConversationService
Update or create given variables for a conversation.- Specified by:
setVariables
in interfaceConversationService
- Parameters:
conversationId
- id of the conversation, cannot be null.variables
- map containing name (key) and value of variables, can be null.
-
removeVariable
Description copied from interface:ConversationService
Removes a variable for a conversation.- Specified by:
removeVariable
in interfaceConversationService
- Parameters:
conversationId
- id of conversation to remove variable in.variableName
- name of variable to remove.
-
removeVariables
Description copied from interface:ConversationService
Removes variables for a conversation.- Specified by:
removeVariables
in interfaceConversationService
- Parameters:
conversationId
- id of conversation to remove variable in.variableNames
- collection containing name of variables to remove.
-
starConversation
Description copied from interface:ConversationService
Star the conversation with the givenconversationId
for the user with the givenuserId
- Specified by:
starConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be starred for the useruserId
- the id of the user
-
unstarConversation
Description copied from interface:ConversationService
Un-stars the conversation with the givenconversationId
for the user with the givenuserId
- Specified by:
unstarConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be un-starreduserId
- the id of the user
-
muteConversation
Description copied from interface:ConversationService
Mute the conversation with the givenconversationId
for the user with the givenuserId
.- Specified by:
muteConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be muted for the useruserId
- the id of the user
-
unmuteConversation
Description copied from interface:ConversationService
Unmute the conversation with the giveconversationId
for the user with the giveuserId
.- Specified by:
unmuteConversation
in interfaceConversationService
- Parameters:
conversationId
- the id of the conversation that should be unmuted for the useruserId
- the id of the user
-