Oracle Tracking Participant (WF 4) Fails w/ key error
Posted: Wed 11 Jan 2012 23:13
We altered our IIS hosting approach for the time being to accomodate the fact that the DevArt tracking participant isn't able to be config enabled (unlike the persistence instance store). To do this, each xamlx workflow service we created is file-less dynamic activated in our config file, , which calls a factory that is derived from the base workflow service host factory. This custom factory essentially adds the DevArt persistence and tracking components.
host.Description.Behaviors.Add(new OracleInstanceStoreBehavior
{
ConnectionString = "omitted;",
InstanceEncodingOption = InstanceEncodingOption.GZip,
InstanceCompletionAction = InstanceCompletionAction.DeleteAll,
InstanceLockedExceptionAction = InstanceLockedExceptionAction.BasicRetry,
HostLockRenewalPeriod = new TimeSpan(00, 00, 30),
RunnableInstancesDetectionPeriod = new TimeSpan(00, 00, 05)
});
OracleTrackingParticipant oracleTracking = new OracleTrackingParticipant("omitted;");
System.Activities.Tracking.TrackingProfile profile = new System.Activities.Tracking.TrackingProfile();
profile.Name = "nmdTrackingAll";
oracleTracking.TrackingProfile = profile;
host.WorkflowExtensions.Add(oracleTracking);
The instance store works this way but the tracking participant does not. When we run a workflow service from the WCF test client, the WF trace log indicates the following DevArt tracking participant error.
0: WorkflowInstance "WorkSpec V1 State Machine" is Started
1: Activity [null] "null" scheduled child activity [1] "WorkSpec V1 State Machine"
2: Activity [1] "WorkSpec V1 State Machine" is Executing
{
Variables
varWorkSpecSaidHandle: System.ServiceModel.Activities.CorrelationHandle
varWorkSpecSaid:
varWorkFlowInstanceId: 00000000-0000-0000-0000-000000000000
varWorkflowIsComplete: False
}
3: Activity [1] "WorkSpec V1 State Machine" scheduled child activity [3] "CancellationScope"
4: Activity [3] "CancellationScope" is Executing
5: Activity [3] "CancellationScope" scheduled child activity [5] "State Machine"
6: Activity [5] "State Machine" is Executing
7: Activity [5] "State Machine" scheduled child activity [53] "Initialize Instance (w/ endpoint)"
8: Activity [53] "Initialize Instance (w/ endpoint)" is Executing
9: Activity [53] "Initialize Instance (w/ endpoint)" scheduled child activity [61] "Initializer"
10: Activity [61] "Initializer" is Executing
{
Arguments
CorrelatesWith:
Parameter0: System.ServiceModel.Activities.CorrelationHandle
}
11: Activity [61] "Initializer" scheduled child activity [61.1] "Sequence"
12: Activity [61.1] "Sequence" is Executing
{
Variables
RequestMessage:
ReceiveNoPersistHandle: System.Activities.NoPersistHandle
}
13: Activity [61.1] "Sequence" scheduled child activity [61.6] "InternalReceiveMessage"
14: Activity [61.6] "InternalReceiveMessage" is Executing
{
Arguments
CorrelatesWith:
noPersistHandle: System.Activities.NoPersistHandle
Parameter0: System.ServiceModel.Activities.CorrelationHandle
}
15: WorkflowInstance "WorkSpec V1 State Machine" is Idle
16: Bookmark "Init|IInit" resumed with payload owner [61.6] "InternalReceiveMessage"
19: WorkflowInstance Aborted [WorkSpec V1 State Machine] Reason "An error occurred while calling tracking participants causing the instance to be aborted. See the inner exception for more details. InnerException Message: The given key was not present in the dictionary."
Is this a known issue and does DevArt have any guidance on configuring this participant in the event the above code base configuration of it is incorrect?
host.Description.Behaviors.Add(new OracleInstanceStoreBehavior
{
ConnectionString = "omitted;",
InstanceEncodingOption = InstanceEncodingOption.GZip,
InstanceCompletionAction = InstanceCompletionAction.DeleteAll,
InstanceLockedExceptionAction = InstanceLockedExceptionAction.BasicRetry,
HostLockRenewalPeriod = new TimeSpan(00, 00, 30),
RunnableInstancesDetectionPeriod = new TimeSpan(00, 00, 05)
});
OracleTrackingParticipant oracleTracking = new OracleTrackingParticipant("omitted;");
System.Activities.Tracking.TrackingProfile profile = new System.Activities.Tracking.TrackingProfile();
profile.Name = "nmdTrackingAll";
oracleTracking.TrackingProfile = profile;
host.WorkflowExtensions.Add(oracleTracking);
The instance store works this way but the tracking participant does not. When we run a workflow service from the WCF test client, the WF trace log indicates the following DevArt tracking participant error.
0: WorkflowInstance "WorkSpec V1 State Machine" is Started
1: Activity [null] "null" scheduled child activity [1] "WorkSpec V1 State Machine"
2: Activity [1] "WorkSpec V1 State Machine" is Executing
{
Variables
varWorkSpecSaidHandle: System.ServiceModel.Activities.CorrelationHandle
varWorkSpecSaid:
varWorkFlowInstanceId: 00000000-0000-0000-0000-000000000000
varWorkflowIsComplete: False
}
3: Activity [1] "WorkSpec V1 State Machine" scheduled child activity [3] "CancellationScope"
4: Activity [3] "CancellationScope" is Executing
5: Activity [3] "CancellationScope" scheduled child activity [5] "State Machine"
6: Activity [5] "State Machine" is Executing
7: Activity [5] "State Machine" scheduled child activity [53] "Initialize Instance (w/ endpoint)"
8: Activity [53] "Initialize Instance (w/ endpoint)" is Executing
9: Activity [53] "Initialize Instance (w/ endpoint)" scheduled child activity [61] "Initializer"
10: Activity [61] "Initializer" is Executing
{
Arguments
CorrelatesWith:
Parameter0: System.ServiceModel.Activities.CorrelationHandle
}
11: Activity [61] "Initializer" scheduled child activity [61.1] "Sequence"
12: Activity [61.1] "Sequence" is Executing
{
Variables
RequestMessage:
ReceiveNoPersistHandle: System.Activities.NoPersistHandle
}
13: Activity [61.1] "Sequence" scheduled child activity [61.6] "InternalReceiveMessage"
14: Activity [61.6] "InternalReceiveMessage" is Executing
{
Arguments
CorrelatesWith:
noPersistHandle: System.Activities.NoPersistHandle
Parameter0: System.ServiceModel.Activities.CorrelationHandle
}
15: WorkflowInstance "WorkSpec V1 State Machine" is Idle
16: Bookmark "Init|IInit" resumed with payload owner [61.6] "InternalReceiveMessage"
19: WorkflowInstance Aborted [WorkSpec V1 State Machine] Reason "An error occurred while calling tracking participants causing the instance to be aborted. See the inner exception for more details. InnerException Message: The given key was not present in the dictionary."
Is this a known issue and does DevArt have any guidance on configuring this participant in the event the above code base configuration of it is incorrect?