Ocorreu um erro ontaskchanged
-
09-12-2019 - |
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 !
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