コード例 #1
0
        public int ExecDataInitialization(List <DynTrnInitializer> dataProviders)
        {
            try
            {
                string ns;
                if (Config.GetValueOf("AppMainNamespace", out ns))
                {
                    foreach (DynTrnInitializer dataProvider in dataProviders)
                    {
                        Console.WriteLine(GXResourceManager.GetMessage("GXM_runpgm", new object[] { dataProvider.Name }));

                        string   dataProviderClassName       = dataProvider.Name.ToLower();
                        string[] dataProviderClassNameTokens = dataProviderClassName.Split('.');
                        dataProviderClassNameTokens[dataProviderClassNameTokens.Length - 1] = "a" + dataProviderClassNameTokens[dataProviderClassNameTokens.Length - 1];
                        dataProviderClassName = string.Join(".", dataProviderClassNameTokens);
                        var      dp    = ClassLoader.FindInstance(dataProviderClassName, ns, dataProviderClassName, new Object[] { context }, null);
                        object[] parms = new object[1];                         //Dataproviders receive 1 sdt collection parameter
                        ClassLoader.ExecuteVoidRef(dp, "execute", parms);
                        IGxCollection bcs = (IGxCollection)parms[0];

                        int idx = 1;
                        while (idx <= bcs.Count)
                        {
                            var bc = ((GxSilentTrnSdt)bcs.Item(idx));
                            if (!bc.InsertOrUpdate() || !bc.Success())
                            {
                                Console.WriteLine(MessagesToString(bc.GetMessages()));
                            }
                            idx++;
                        }
                    }
                    if (dataProviders.Count > 0)
                    {
                        context.CommitDataStores("ExecDataInitialization");
                    }
                }
                this.cleanup();
                return(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                GXLogging.Error(log, ex);
                return(1);
            }
        }