Pregunta

Estoy creando nueva audiencia programáticamente, pero quiero configurar su guid por código (mío)

¿Es posible hacer esto?Si es así, ¿cómo?

¿Fue útil?

Solución

audiencia es un campo interno establecido por SharePoint.No puede configurarlo, pero puede recuperarlo si se ha guardado en el DB.

¿Cuál es su requisito que significa que tiene que controlar el ID de la audiencia?Normalmente, usted recuperará la audiencia por su nombre.Si lo necesita, puede acceder al valor de audiencia.

espero que ayude.

Otros consejos

Consulte el enlace a continuación, vínculo Sr. Raju

http:// social.TechNet.Microsoft.com/forums/DA/SharePoint2010Programming/Thread/181FDB91-B16D-4E51-A9A4-454C8AD1C374

Encontrará que no es posible porque SharePoint logra GUID internamente.Así que no puedes asignarlo.En algunos casos es posible, pero en su caso no es posible.

pude hacer esto.Creé un procedimiento almacenado personalizado (copiando y modificando el utilizado por la API para crear audiencias) para crear la audiencia con el GUID que necesitaba.Mire el Orgle Procs dentro del perfil DB para ver cómo se hace esto.

De todos modos, una vez que creé las audiencias con el Proc.Usé el administrador central para configurar las reglas.

En general, no se recomienda el desorden con las bases de datos de SharePoint.Ten cuidado al hacer esto.Siempre es mejor usar la API.Dicho esto, esto funcionó muy bien.Sin problemas.Bien probado.

Código:

--Created by James Hodges 10-19-2012
/****** Object:  StoredProcedure [dbo].[usp_AddAudience_Custom]    Script Date: 10/19/2012 08:52:19 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_AddAudience_Custom]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[usp_AddAudience_Custom]
GO


/****** Object:  StoredProcedure [dbo].[usp_AddAudience_Custom]    Script Date: 10/19/2012 08:52:19 ******/
SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[usp_AddAudience_Custom]
@AudienceID uniqueidentifier,
@OrgleName nvarchar(500),
@OrgleDescription nvarchar(1500) = NULL

AS

DECLARE
@correlationId uniqueidentifier,
@OrgleID uniqueidentifier,
@Error int,
@srError int,
@GroupType smallint,
@bRemove bit,
@OwnerAccountName nvarchar(400),
@partitionID uniqueidentifier

SET NOCOUNT ON

SET @correlationId = NEWID()
SET @GroupType = 2
SET @bRemove = 0
SET @OwnerAccountName = NULL
SET @partitionID = (SELECT TOP 1 PartitionID FROM Orgle_List WITH(NOLOCK) WHERE OrgleID = '00000000-0000-0000-0000-000000000000')  --JRH ..This worked for my company. If you have more than one partition you may need to edit this.


SELECT @Error = 1
--check the OrgleID: Note: we make the Audience Name unique across the board.
SELECT @OrgleID = OrgleID FROM Orgle_List WHERE OrgleName = @OrgleName AND PartitionID = @partitionID

IF @bRemove = 1
BEGIN
    IF @OrgleID IS NOT NULL
    BEGIN
        EXEC @Error =  Orgle_RemoveOrgle @partitionID, @OrgleID, @correlationId=@correlationId
    END
END
ELSE  -- add a new one
BEGIN
    SELECT @Error = 3

    IF @OrgleID IS NOT NULL -- can't create a duplicate orgle name
        GOTO CODE_EXIT

    SET @Error = 0
    BEGIN
        -- create the new orgle name
        SELECT @OrgleID = @AudienceID
        BEGIN TRANSACTION
        BEGIN
            INSERT INTO Orgle_List ( PartitionID, OrgleID, OrgleName, OrgleNameDescription, OwnerAccountName )
                VALUES ( @partitionID, @OrgleID, @OrgleName, @OrgleDescription, @OwnerAccountName )

            IF @@ROWCOUNT = 1
            BEGIN
                -- insert into stats
                DECLARE @UpdateTime as DATETIME
                    SET @UpdateTime = GETUTCDATE()
                -- insert into stats
                INSERT INTO Orgle_Stats 
                    (PartitionID, OrgleID, GroupType, CreateTime, LastPropertyUpdate, QueryCOunt, GroupCount, MembershipCount, OrgleLock) 
                    VALUES (@partitionID, @OrgleID, @GroupType, @UpdateTime, @UpdateTime, 0, 0, 0, 0)
                IF @@ROWCOUNT <> 1
                SET @Error = 3  
            END
            ELSE
                SET @Error = 3
        END
        IF @Error = 0
            COMMIT TRANSACTION
        ELSE
            ROLLBACK TRANSACTION
    END

END

CODE_EXIT:
    SELECT @Error AS ERROR, @OrgleID AS OrgleID

SET NOCOUNT OFF
GO

Puede especificar el GUID de la audiencia en la regla de la audiencia.

$newrule = New-Object Microsoft.Office.Server.Audience.AudienceRuleComponent($property,"Not Contains","GUID");
[Void]$newaud.AudienceRules.Add($newrule);

Licenciado bajo: CC-BY-SA con atribución
scroll top