internal void Run()
                {
                    var gdb     = SP.GetRequiredService <Data.Rdb.TraffkGlobal.TraffkGlobalDbContext>();
                    var job     = gdb.Job.Find(JobInfo.JobId);
                    var id      = InvocationData.CreateFromJson(job.InvocationData);
                    var service = SP.GetRequiredService(id.Type);

                    try
                    {
                        var parameterTypes = id.ParameterTypes;
                        var parameters     = new List <object>();
                        var arguments      = id.SerializedArguments;
                        for (int z = 0; z < arguments.Length; ++z)
                        {
                            var    pt = parameterTypes[z];
                            object arg;
                            if (pt.IsEnum)
                            {
                                arg = Enum.Parse(pt, (string)arguments[z]);
                            }
                            else
                            {
                                arg = Convert.ChangeType(arguments[z], pt);
                            }
                            parameters.Add(arg);
                        }
                        var mi  = id.Type.GetMethod(id.Method, parameterTypes);
                        var ret = mi.Invoke(service, parameters.ToArray());
                        if (ret is Task)
                        {
                            ((Task)ret).ExecuteSynchronously();
                        }
                    }
                    finally
                    {
                        Stuff.Dispose(service);
                    }
                }