Domanda

Io sono la creazione di un elenco personalizzato in Visual Studio 2010 per SharePoint 2010.

Voglio impostare "approvazione necessaria" per un singolo listitems false o disabili.

La mia intenzione è, che un elemento può essere approvata o rifiutata solo una volta, ma non passare da "approvato" e "non approvato" a "approvato" e così via

Più dettagliate scenario:

  • Ho un elenco di elementi che devono avere rivisto dopo l'aggiunta.
  • Se essi ottenere approvato o rifiutato è un absolut decisione e non dovrebbe mai essere cambiato
  • Se l'elemento viene approvato alcuni eventi deve essere attivata
  • Se viene rifiutato un'e-mail deve essere inviata!

Le Mie Idee:

Idea - Flusso Di Lavoro:

La mia prima idea era quella di creare un flusso di lavoro che licenziato dopo un ListItem aggiunto.Il WF dovrebbe creare un'attività che potrebbero essere rivisti.Se è positivo, si deve fuoco alcune funzioni e cancella se stesso.

Idea - Progettazione Del Flusso Di Lavoro: enter image description here

Idea - Codice Del Flusso Di Lavoro:

           public Guid workflowId = default(System.Guid);
                public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
                // these properties are for the workflow task that will be created.
                public SPWorkflowTaskProperties CreateTaskApproval_TaskProperties = new SPWorkflowTaskProperties();
                public SPWorkflowTaskProperties CreateTaskApproval_AffterTaskProperties = new SPWorkflowTaskProperties();
                public SPWorkflowTaskProperties CreateTaskApproval_BeforeTaskProperties = new SPWorkflowTaskProperties();
                public String CreateTaskApproval_ContentTypeId = default(System.String);
                public Int32 CreateTaskApproval_ListItemId = default(System.Int32);
                public Guid CreateTaskApproval_TaskId = default(System.Guid);

           private void createTask1_MethodInvoking(object sender, EventArgs e)
                {
                    createTask1.TaskId = new Guid();
                    // Now create the approval task.
                    // Set up some of the properties.
                    CreateTaskApproval_TaskId = Guid.NewGuid();
                    //Setting the task properties
                    CreateTaskApproval_TaskProperties.Title = "TestTitle"
                    CreateTaskApproval_TaskProperties.Description = "Description";
                    CreateTaskApproval_TaskProperties.AssignedTo = @"testemail\testuser";
                    CreateTaskApproval_TaskProperties.SendEmailNotification = false;
                    CreateTaskApproval_TaskProperties.TaskType = 1;
                    LogComment("Request Task Created.");
                }
             private void onTaskChanged1_Invoked(object sender, ExternalDataEventArgs e)
                {

    //!!!! The Problem is here at Status
                        // Check to make sure the field is there on the item.
                        if (CreateTaskApproval_TaskProperties.ExtendedProperties["Status"] != null)
                        {
                            // Evaluate the value of the field.
                            if (CreateTaskApproval_TaskProperties.ExtendedProperties["Status"].ToString() == "Approved" || CreateTaskApproval_TaskProperties.ExtendedProperties["Status"].ToString() == "Declined")
                            {

                                TaskApproval_ApproveComplete = true;
                            }
                            else
                            {
                                TaskApproval_ApproveComplete = false;
                            }
                        }
 }
                private void completeTask1_MethodInvoking(object sender, EventArgs e)
                {
                    workflowProperties.Item.ModerationInformation.Status = SPModerationStatusType.Approved;

//Fire some code here

                }

Idea - Flusso Di Lavoro - Problemi:Non riesco a compiti di moderazione stato a tutti.("approvato" e così via)

CreateTaskApproval_TaskProperties.ExtendedProperties["Status"]

Non sanno come?

Idea 2 Personalizzato Pagina ASPX:

Un'altra idea è quella di creare una pagina aspx che elenca tutti gli elementi.In modo che l'utente possa approvare con personalizzato acctions!Che dire di questa idea?È possibile una buona alternativa?

È stato utile?

Soluzione

Se è necessario applicare questo tipo di logica, vorrei suggerire di creare un flusso di lavoro o implementare la logica di utilizzo di un gestore di eventi (OnItemUpdating) in elementi di una lista per lista.

In entrambi i casi, si dovrebbe verificare le colonne contenenti lo stato, e controllare se è stato Approvato o Rifiutato, e poi (a seconda delle esigenze aziendali) o rifiutare eventuali cambiamenti o modifiche a tale campo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top