Hello,
I'm trying to append, set or delete a keyword but I don't know how do it?
Anyone have the same problem and did it solve?
Thank you.
This is the solution.
I hope it will help you.
Regards.
'''
<summary>
''' Función para añadir un keyword al final de la lista de keywords.
</summary>
''' <param name="r_obejct_id">Id del documento a actualizar.
</param>
''' <param name="keyword">Clave a insertar.
''' <param name="User">Nombre de usuario.
''' <param name="repository">Repositorio.
''' <param name="url">Url.
<returns></returns>
''' <remarks>Se verifica que no exista el keyword en la lista. Si no existe lo añade. Si ya existe no lo añade.
</remarks>
Public Shared Function AppendKeywordInDocumentById(ByVal r_obejct_id As String, ByVal keyword As String, byVal user As String,ByVal repository As String,ByVal url As String) As Boolean
Dim m_object_id As ObjectId = New ObjectId(r_obejct_id)
Dim m_objectIdentity As ObjectIdentity = New ObjectIdentity(m_object_id, repository)
Dim m_objectIdentityset As ObjectIdentitySet = New ObjectIdentitySet(m_objectIdentity)
Dim miDataObject As New DataObject(m_objectIdentity, hnaObjectType)
Dim m_dataPackage As New DataPackage(miDataObject)
Dim m_operationOptions As OperationOptions = Nothing
Dim m_serviceFactory As ServiceFactory = ServiceFactory.Instance
Dim m_serviceContext As IServiceContext = ChangeContext(user, repository, url)
Dim m_objectService As IObjectService = m_serviceFactory.GetRemoteService(Of objectService)(m_serviceContext, coreModuleName, url)
Dim keys As StringArrayProperty
Dim claveEncontrada As Boolean = False
m_dataPackage = m_objectService.Get(m_objectIdentityset, Nothing)
For Each propiedad As [Property] In m_dataPackage.DataObjects(0).Properties.Properties
If propiedad.Name.ToLower = CteDocument.Keywords
Then
keys = m_dataPackage.DataObjects(0).Properties.Get(CteDocument.Keywords)
Dim indice As Integer
= keys.Values.IndexOf(keyword)
If indice = -1
keys.Values.Add(keyword)
miDataObject.Properties.Set(keys)
m_dataPackage =
New
DataPackage(miDataObject)
m_objectService = m_serviceFactory.GetRemoteService(
Of
IObjectService)(m_serviceContext, coreModuleName, url)
Dim result As
DataPackage = m_objectService.Update(m_dataPackage, m_operationOptions)
Return
True
End
If
Exit
For
Next
False
Function