Beispiel #1
0
        public static void UseWorkflow(this IApplicationBuilder app)
        {
            WorkflowActivator.Configure(app.ApplicationServices);

            //var ass_ref = System.Reflection.Assembly.GetEntryAssembly()
            //                                    .GetReferencedAssemblies()
            //                                    .Select(System.Reflection.Assembly.Load)
            //                                    //.SelectMany(x => x.DefinedTypes)
            //                                    .SelectMany(x => x.GetTypes())
            //                                    .OrderBy(t => t.Name)
            //                                    //.ToArray()
            //;


            //var mytypes = System.Reflection.Assembly.GetEntryAssembly().GetTypes();
            //var all = ass_ref.Union(System.Reflection.Assembly.GetEntryAssembly().GetTypes());

            //var types = from t in all
            //            let att = t.GetCustomAttribute<DataContractAttribute>()
            //            where att != null
            //            orderby t.Name
            //            select t;

            //var r = types.ToList();

            //.Where(type => typeof(IProfile).IsAssignableFrom(type));

            //var all = from a in System.Reflection.Assembly.GetEntryAssembly().GetReferencedAssemblies()
            //          select a;

            //var load =

            WorkflowSerialization.initializeKnownTypes(null);
        }
Beispiel #2
0
        private bool SaveWorkflow(InstancePersistenceContext context, SaveWorkflowCommand command)
        {
            if (context.InstanceVersion == -1)
            {
                context.BindAcquiredLock(0);
            }

            if (command.CompleteInstance)
            {
                context.CompletedInstance();
                if (!KeepInstanceDataAfterCompletion && ToDelete != null)
                {
                    //DeleteFiles(context.InstanceView.InstanceId);
                    ToDelete();
                }
            }
            else
            {
                Dictionary <string, InstanceValue> instanceData     = SerializeablePropertyBagConvertXNameInstanceValue(command.InstanceData);
                Dictionary <string, InstanceValue> instanceMetadata = SerializeInstanceMetadataConvertXNameInstanceValue(context, command);

                try
                {
                    //serialize_dc(instanceData, instanceMetadata);
                    //string serializedCorrelation = WorkflowSerialization.Serialize<WorkflowCorrelation>(this.Correlation);
                    string serializedInstanceData     = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceData);
                    string serializedInstanceMetadata = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceMetadata);

                    if (ToPersist != null)
                    {
                        ToPersist(new Serialized()
                        {
                            SerializedInstanceData     = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceData),
                            SerializedInstanceMetadata = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceMetadata)
                        });
                    }
                }
                catch (Exception exc)
                {
                    throw exc;
                }

                context.PersistedInstance(command.InstanceData);
                if (command.CompleteInstance)
                {
                    context.CompletedInstance();
                }

                if (command.UnlockInstance || command.CompleteInstance)
                {
                    context.InstanceHandle.Free();
                }
            }

            return(true);
        }
Beispiel #3
0
        private void deserialize_dc(out Dictionary <string, InstanceValue> instanceData, out Dictionary <string, InstanceValue> instanceMetadata)
        {
            string serialized = string.Empty;

            serialized   = File.ReadAllText(_storePath("InstanceData"));
            instanceData = WorkflowSerialization.DeSerialize <Dictionary <string, InstanceValue> >(serialized);

            serialized       = File.ReadAllText(_storePath("InstanceMetadata"));
            instanceMetadata = WorkflowSerialization.DeSerialize <Dictionary <string, InstanceValue> >(serialized);
        }
Beispiel #4
0
        private void serialize_dc(Dictionary <string, InstanceValue> instanceData, Dictionary <string, InstanceValue> instanceMetadata)
        {
            string serializedCorrelation      = WorkflowSerialization.Serialize <WorkflowCorrelation>(this.Correlation);
            string serializedInstanceData     = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceData);
            string serializedInstanceMetadata = WorkflowSerialization.Serialize <Dictionary <string, InstanceValue> >(instanceMetadata);

            File.WriteAllText(_storePath("Correlation"), serializedCorrelation);
            File.WriteAllText(_storePath("InstanceData"), serializedInstanceData);
            File.WriteAllText(_storePath("InstanceMetadata"), serializedInstanceMetadata);
        }
Beispiel #5
0
 public void Correlate()
 {
     if (this.Correlation.WorkflowId == Guid.Empty)
     {
         string serialized = string.Empty;
         serialized = File.ReadAllText(_storePath("Correlation"));
         WorkflowCorrelation correlation = WorkflowSerialization.DeSerialize <WorkflowCorrelation>(serialized);
         this.Correlation.WorkflowId = correlation.WorkflowId;
     }
 }
Beispiel #6
0
        private bool LoadWorkflow(InstancePersistenceContext context, LoadWorkflowCommand command)
        {
            if (command.AcceptUninitializedInstance)
            {
                return(false);
            }

            if (context.InstanceVersion == -1)
            {
                context.BindAcquiredLock(0);
            }

            IDictionary <XName, InstanceValue> instanceData     = null;
            IDictionary <XName, InstanceValue> instanceMetadata = null;

            Dictionary <string, InstanceValue> serializableInstanceData     = null;
            Dictionary <string, InstanceValue> serializableInstanceMetadata = null;

            try
            {
                if (ToLoad != null)
                {
                    Serialized serialized = ToLoad();

                    serializableInstanceData     = WorkflowSerialization.DeSerialize <Dictionary <string, InstanceValue> >(serialized.SerializedInstanceData);
                    serializableInstanceMetadata = WorkflowSerialization.DeSerialize <Dictionary <string, InstanceValue> >(serialized.SerializedInstanceMetadata);
                }
            }
            catch (Exception exc)
            {
                throw;
            }

            if (serializableInstanceData != null)
            {
                instanceData = this.DeserializePropertyBagConvertXNameInstanceValue(serializableInstanceData);
            }

            if (serializableInstanceMetadata != null)
            {
                instanceMetadata = this.DeserializePropertyBagConvertXNameInstanceValue(serializableInstanceMetadata);
            }

            context.LoadedInstance(InstanceState.Initialized, instanceData, instanceMetadata, null, null);

            return(true);
        }
Beispiel #7
0
        public static void UseWorkflow(this IApplicationBuilder app)
        {
            WorkflowActivator.Configure(app.ApplicationServices);

            WorkflowSerialization.initializeKnownTypes(null);
        }