Pergunta

Estou tentando criar um fluxo de trabalho simples contendo um while no qual você pode encontrar:CreateTaskWithContentTypes enquanto Ontaskchanged ConcluirTarefa

Quando tento iniciar o fluxo de trabalho adicionando um novo item à minha lista de associados, recebo a mensagem "Ocorreu um erro".Então tentei depurar um pouco e descobri que o erro estava no receptor do evento ontaskchanged.Mas a única coisa que faz é sair do fluxo de trabalho.Não tenho nenhuma mensagem de erro ou algo assim.

Então procurei na internet e descobri um problema semelhante.Mas acho que não encontrei o meu, ou não entendi do que se tratava!

Aqui está meu método de criação de tarefa:

private void createTaskWithContentType1_MethodInvoking(object sender, EventArgs e)
{
    TaskProperties = new SPWorkflowTaskProperties();
    TaskId = Guid.NewGuid();
    TaskProperties.Title = Title;
    TaskProperties.Description = DescriptionName;
    TaskProperties.DueDate = DueDate;
    TaskProperties.AssignedTo = this.Approver;
    TaskProperties.PercentComplete = 0;
    TaskProperties.StartDate = DateTime.Today;
}

Aqui está minha condição de código while:

private void WaitResponse_Invoke(object sender, ConditionalEventArgs e)
{
    e.Result = !isFinished;
}

Aqui está o método invocado do meu receptor de eventos ontaskchanged (basicamente não faz nada):

private void WaitApproval_Invoked(object sender, ExternalDataEventArgs e)
{           
}

Aqui estão as propriedades depois e antes:public static DependencyProperty WaitApproval_AfterPropertiesProperty =

DependencyProperty.Register("WaitApproval_AfterProperties", typeof(Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties), typeof(ActivityLibrary.EtapeOuiNon));

    [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
    [BrowsableAttribute(true)]
    [CategoryAttribute("Misc")]
    public Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties WaitApproval_AfterProperties
    {
        get
        {
            return ((Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties)(base.GetValue(ActivityLibrary.EtapeOuiNon.WaitApproval_AfterPropertiesProperty)));
        }
        set
        {
            base.SetValue(ActivityLibrary.EtapeOuiNon.WaitApproval_AfterPropertiesProperty, value);
        }
    }

    public static DependencyProperty WaitApproval_BeforePropertiesProperty = DependencyProperty.Register("WaitApproval_BeforeProperties", typeof(Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties), typeof(ActivityLibrary.EtapeOuiNon));

    [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
    [BrowsableAttribute(true)]
    [CategoryAttribute("Misc")]
    public Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties  WaitApproval_BeforeProperties
    {
        get
        {
            return ((Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties)(base.GetValue(ActivityLibrary.EtapeOuiNon.WaitApproval_BeforePropertiesProperty)));
        }
        set
        {
            base.SetValue(ActivityLibrary.EtapeOuiNon.WaitApproval_BeforePropertiesProperty, value);
        }
    }

Para informação, o token de correlação é o mesmo em todos os lugares.Além disso, toda essa parte do meu fluxo de trabalho está em uma atividade separada.

Então, se alguém tiver uma idéia do que poderia ser!Muito obrigado !

Foi útil?

Solução

Eu encontrei o problema!Quando o evento ontaskchanged é acessado, o fluxo de trabalho está tentando se serializar, para que possa ficar em estoque enquanto espera o evento ser acionado!

O problema é que no meu fluxo de trabalho eu estava usando objetos personalizados que não eram serializáveis ​​como variável pública:

public sealed partial class Workflow1 : SequentialWorkflowActivity
{
    public Workflow1()
    {
        InitializeComponent();
    }
    public List<DefEtape> ListeEtapes = new List<DefEtape>();
    public DefEtape etapeEnCours = new DefEtape();

Para superar esse problema, acabei de adicionar:[Serializable] para minhas aulas para que se tornasse:

namespace CSPIMMOHelper
{
    [Serializable]
    public class DefEtape
    {

Espero que isso ajude algumas pessoas

Outras dicas

Obrigado esta foi a solução para o meu problema!eu tinha um SPListItem na minha classe que não é serializável, como um bug em geral.

O problema pode ser encontrado nos logs do ULS

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top