Beispiel #1
0
        public string deleteProcess(int P_ProcessId, bool deleteDBEntries)
        {
            InFlowDb _db = new InFlowDb(cfgSQLConnectionString);
            var p_Process = _db.P_Processes.Find(P_ProcessId);


            WorkflowManagementClient client = new WorkflowManagementClient(new Uri(cfgWFMBaseAddress + p_Process.WFM_RootScope + p_Process.WFM_ProcessScope + "/"), credentials);
            client.CleanUp();

            if (deleteDBEntries)
            {
                var p_ProcessInstances = _db.P_ProcessInstance.Where(result => result.P_Process_Id == p_Process.Id).ToList();
                foreach(var i in p_ProcessInstances)
                {
                    _db.T_Tasks.RemoveRange(_db.T_Tasks.Where(result => result.P_ProcessInstance_Id == i.Id));
                    _db.M_Messages.RemoveRange(_db.M_Messages.Where(result => result.ProcessInstance_Id == i.Id));
                }

                _db.P_ProcessInstance.RemoveRange(p_ProcessInstances);

                var p_ProcessSubjects = _db.P_ProcessSubjects.Where(result => result.Process_Id == p_Process.Id).ToList();
                foreach(var ps in p_ProcessSubjects)
                {
                    _db.P_WorkflowInstances.RemoveRange(_db.P_WorkflowInstances.Where(result => result.ProcessSubject_Id == ps.Id));
                }
                _db.P_ProcessSubjects.RemoveRange(p_ProcessSubjects);
                _db.P_Processes.Remove(p_Process);

                _db.SaveChanges();

            }

            return p_Process.WFM_RootScope + p_Process.WFM_ProcessScope;
        }