帮酷LOGO
0 0 评论
文章标签:SYS  MAN  数据  info  informat  INF  系统  

主屏幕

介绍

你的应用程序/扩展是做什么的? 它解决了什么业务问题?

Office 产品库数据中心是我们企业所有产品和促销信息的中心集线器。 它是一个以明确。简洁和一致的方式提供的信息的唯一源。

我们的业务中有两个主要问题,数据中心为你提供了解决方案:

we我们是一家独立的37公司,位于新西兰。 因为每个商店都是独立的业务,所以每个商店都有自己的产品信息数据库。 历史上每个商店都维护自己的数据库。 最近,我们已经向国家支持 Office ( NSO ) 转移产品信息,然后将这些信息分发到存储库的数据库中。 我们一直在使用ERP系统的副本,这已经创建了自己的挑战,因为它不是这样设计的。 使用我们的ERP系统存储产品信息所产生的主要问题是:

  • 将所有相关信息都保存到产品管理员中是不可能
  • 一些信息已经用非常规方法存储,这些方法使得提取困难和缓慢
  • 任何定制的数据提取都需要定制报表,这些报表在创建和运行时非常耗时
  • 没有可用的历史信息,可用的内容基本上没有意义
  • 在未来的某个特定日期更新成本价格是一个棘手的过程,这是我们的ERP的一个肮脏的过程

通过使用我们的ERP取代 ERP,从而以更加清晰和一致的方式展示数据,从而以更加清晰和一致的方式展示数据,从而使未来的数据库增加成本价格变化,并为数据库提供一种简单的方法。

每一年 ,每一个网页最多有两页,一个主要目录,sent pages,email email email email email email email email categories categories email customer customer customer。 到目前为止,我们已经通过多个excel电子表格来创建这个宣传材料,在我们的Office 和供应商之间通过电子邮件发送以确认数据,然后再进行整理和检查,以填充促销计划的布局。 当我们的促销增长越来越复杂,这个excel电子表格需要更多的时间来维护和分发。 只有一个人可以一次编辑每个电子表格,这意味着这个问题不能在它的中投入更多资源。

数据中心为所有促销信息提供了中央存储库,并允许供应商在任何出版物之前访问该信息。 多个用户可以同时访问相同的信息。 许多普通数据输入任务已经自动或者简化。 我们希望大大减少整理和确认促销信息,从而提高更高质量的资源。

数据中心要求完全integratation与我们的ERP系统,允许资料中心维护的数据中心容易流动到我们的ERP,然后向下到我们的存储数据库。 由于LightSwitch支持 SQL Server的支持,这很容易实现简单的数据提取。

这不是系统的需求,但是有强烈的希望在云中拥有数据中心。 这个愿望是由于lightswitch与 Windows Azure的密切关系而实现的。 数据中心是桌面应用程序,但是应用程序服务托管在Azure上,应用程序的所有数据都存储在 SQL Azure中。 因为它需要访问用户的系统和 Outlook,所以我使数据中心成为桌面应用程序。 SQL数据库连接的供应商确认中心门户是完全位于 Windows Azure上的一个web应用程序。 我们不愿意要求供应商安装我们在他们的网络上创建的应用程序,这需要成为一个网络应用。

数据中心将为我们的业务提供大量的准确性和效率,使我们能够更多地关注战略计划,减少数据输入和维护。

这里应用程序有多少个屏幕和实体?

数据中心由 28个屏幕和 2项目中的25实体组成。

LightSwitch是否保存了你的商业资金? 如何做到?

LightSwitch节省了我们节省了钱,因为我们能够开发数据中心 In-House。 这节省了承包商和/或者第三方开发者的费用。 LightSwitch还为我们提供了在未来轻松扩展数据中心的能力,这将节省更多的资金。 our允许我们进入数据中心的功能将使我们产生一个 GREATER的促销材料,这将使我们的业务更多。 因为产品信息更新,更易于维护,所以我们还会节省金钱和产生更少的压力。 在 Windows Azure上托管应用也节省了我们的钱,因为我们不需要设置任何新服务器,也可以根据需要完全关闭。 如果我们没有使用 LightSwitch,那么利用 Windows Azure的这些优势将是非常困难的。

我估计LightSwitch在开发成本中至少节省了 $20,000. 我们在数据中心提供的功能将继续保存每年数千美元的业务,而不是保存它们。

如果你没有 LightSwitch,这个应用程序仍然是构建的? 如果是,用什么?

是,我们正在调查以 ASP.NET web窗体为web应用程序的第三方承包商建立的数据中心。 我以前使用 ASP.NET 动态数据构建了数据中心的原始版本,但是应用程序开发花费了两倍,并拥有LightSwitch数据中心的功能 10%。 LightSwitch从成本。速度和质量方面把这两种选择都blown了。

这里应用程序支持多少用户?

10个用户在国家支持 Office,并潜在超过 300供应商通过网站门户,虽然并非全部都需要使用它。 如果我们需要给 300供应商访问它,虽然这可能是由于easilly的可扩展性而实现的。 这是我们决定使用Azure平台的主要原因,而且在不需要时完全关闭web服务器的能力。

这个应用程序花了多长时间实际使用LightSwitch构建?

从开始到结束,完成数据中心花了大约 4周的时间,尽管这时有很多学习和阅读。 如果我不得不从头开始创建它,那么它将花费更少的时间。

这里应用程序是否使用LightSwitch扩展? 如果是,你是哪一个你自己写的这些? 如果是,那么 public 是否可以? 位置?

数据中心使用以下扩展:

  • 微软的微软LightSwitch扩展
  • 基于GridLogic的Office 集成包
  • Microsoft Excel导入程序
  • 使用ComponentOne实现LightSwitch的ComponentOne OLAP

我没有写任何这些扩展。 除了 ComponentOne OLAP以外,它们都可以通过扩展管理器获得,但OLAP可以在站点的站点找到。 我强烈推荐他们的扩展,我认为每个LightSwitch应用都应该使用它 !

LightSwitch是如何让你的开发者 life? 你认为的其他选项相比,构建更快?

我创建了一个 ASP.NET 动态数据网络应用程序,在使用LightSwitch之前管理数据。 在LightSwitch中,我能够在设计和构建动态数据解决方案的一半时间内构建具有 90%个功能的应用程序。 我们的用户对最终产品更加满意,这使得我的生活成为开发者 1,000,000%更好 !

LightSwitch让我成为了最高效的开发者。 它不仅鼓励正确的设计,而且它使执行速度和简单性。 让我专注于添加功能,这将极大地帮助我们的用户,而不是花费时间。 我不能在没有LightSwitch的时候提供可用时间框架中的功能。 我不认为第三方或者承包商可以。 我们将会破坏我们的原始视觉,最终有些比以前的系统更有效,不能进一步定制。 我们已经为我们提供了一些精确的基础,以便随时随地开发,以解决我们业务中的更多问题。

通常我在C 和我没有喜欢回来创建的东西在C 之后看到 Visual Studio的令人惊讶的力量。 我真正感觉到,当我不使用它时,我正在进入风中。 感谢微软制作如此惊人。强大和easy-to-use的工具 ! 感谢你还必须转到支持该产品的令人惊讶的rtc社区,支持该竞赛的支持。 它非常令人激动和非常信息,看到世界各地的人都在使用 tmodel。 感谢你的CodeProject !

链接,屏幕截图,视频

如果有兴趣阅读完整文档(。减去大型附录),那么它可以作为 7 word文档这里描述了多少进程,并向用户提供了作为培训文档提供给用户的how。

你还可以阅读我在博客中发现的旅程和内容: therearefourlightswitches.blogspot.com

屏幕快照

主屏幕:

主屏幕

包含价格历史图的产品细节屏幕包含在它的OLAP扩展中的Silverlight的图表:

产品详细信息

操作中的ComponentOne Olap屏幕:

分析产品

分析产品图表

你可以在我的博客上阅读的批量编辑屏幕:

批量编辑屏幕

促销编辑屏幕:

推广屏幕

供应商确认门户:

供应商确认门户

显示你作为这里解决方案的一部分开发的一个酷或者独特的代码或者技术。

这个代码在我允许用户上传包含来自供应商的新价格信息的电子表格的屏幕上使用。 一旦信息被上传到屏幕用户,点击一个运行以下代码的按钮:


void AddThisPricingToProducts()


{


 /* this function adds the pricing to the product prices table 


 * I've done it this way so that I can change the end date on the price that currently


 * has a blank end date so that only one price ever has a blank end date


 */


 //Get all the price changes uploaded


 var TheseProductPriceChanges = this.DataWorkspace.ApplicationData.ProductPriceChanges.OrderBy(x => x.Id);



 foreach( ProductPriceChange ThisProductPriceChange in TheseProductPriceChanges)


 {


 //if there is a price record which matches the candidate key on the product


 //prices table then check the information on that record


 var MatchingProductPrices = this.DataWorkspace.ApplicationData.ProductPrices.


 Where(x => x.ProductPriceProductCode.Id == ThisProductPriceChange.Product.Id && 


 x.ProductPriceSupplier.Id == ThisProductPriceChange.Supplier.Id && 


 x.ProductPriceUnit.Id == ThisProductPriceChange.Unit.Id && 


 x.ProductPriceEndDate == null);


 ProductPrice CurrentProductPrice = null;


 if (MatchingProductPrices!= null)


 {


 CurrentProductPrice = MatchingProductPrices.FirstOrDefault();


 }



 if (CurrentProductPrice!= null)


 {


 //Change the end date on the current price so that the system knows when to use the new price


 CurrentProductPrice.ProductPriceEndDate = ThisProductPriceChange.ProductPriceChangeStartDate;



 //if the Cost price and the RRP on the product price in question are the same as what we


 //are loading then don't bother loading anything.


 if (CurrentProductPrice.ProductPriceCostExGST == ThisProductPriceChange.ProductPriceChangeCostExGST && 


 CurrentProductPrice.ProductPriceRRPExGST == ThisProductPriceChange.ProductPriceChangeRRPExGST)


 {


 this.ShowMessageBox("The current pricing for product:" + 


 CurrentProductPrice.ProductPriceProductCode.ToString() + 


 "nmatches the pricing currently in the system.nnBecause of this no changes were made.");


 ThisProductPriceChange.Delete();


 continue;


 }



 //if the price that we are loading is more than 50% different to the price that is in


 //the database then the user will need to confirm that the price change is valid


 //and the price will not be loaded


 if ((((CurrentProductPrice.ProductPriceCostExGST - ThisProductPriceChange.ProductPriceChangeCostExGST) 


/CurrentProductPrice.ProductPriceCostExGST) * 100) > (decimal)50.00)


 {


 this.ShowMessageBox("The current pricing for product:" + 


 CurrentProductPrice.ProductPriceProductCode.ToString() + 


 "nis significantly different to the current price in the system:nnCurrent Price:" + 


 CurrentProductPrice.ProductPriceCostExGST.ToString() + "nnNew Price:" + 


 ThisProductPriceChange.ProductPriceChangeCostExGST.ToString() + 


 ".nnBecause of this no changes were made." + 


 "nIf this price change is valid you will need to process it manually.");


 ThisProductPriceChange.Delete();


 continue;


 }


 }



 //Load the new product price into the database


 ProductPrice NewProductPrice = new ProductPrice();



 NewProductPrice.ProductPriceProductCode = ThisProductPriceChange.Product;


 NewProductPrice.ProductPriceSupplier = ThisProductPriceChange.Supplier;


 NewProductPrice.ProductPriceUnit = ThisProductPriceChange.Unit;


 NewProductPrice.ProductPriceStartDate = ThisProductPriceChange.ProductPriceChangeStartDate;


 NewProductPrice.ProductPriceEndDate = ThisProductPriceChange.ProductPriceChangeEndDate;


 NewProductPrice.ProductPriceCostExGST = ThisProductPriceChange.ProductPriceChangeCostExGST;


 NewProductPrice.ProductPriceRRPExGST = ThisProductPriceChange.ProductPriceChangeRRPExGST;


 NewProductPrice.ProductPriceComment = ThisProductPriceChange.ProductPriceChangeComment;


 ThisProductPriceChange.Delete();


 }



 return;


}



这里代码不会让价格更改 GREATER 超过 50%,因为它们通常表示数据问题。 如果信息与已经存在的信息相同,它将不会对数据库进行任何更改。 当发生价格变化时,当前价格的结束日期与新价格的开始日期相同,使用户不需要手工执行。 这样节省了我们公司的时间和金钱,节省了用户在执行普通数据输入任务时。

Points of Interest

在编写应用程序时,你是否学习过 interesting/fun/annoying?

如果你在新西兰和数据由Azure承载,那么如果你使用美国区域而不是亚洲区域。 我测试之前有人告诉过我,我不相信他们- 我应该相信他们 !

你做了什么特别巧妙的事情或者是 zany?

我们的产品中心系统非常聪明,它可以节省我们的产品管理员和供应商大量时间来跟踪信息并反复检查相同的数据。

每当供应商在web门户中更改信息时,它会在另一个表上创建一个新值。 在我们末尾有一个用户可以检查变更,如果他们希望在单击一个按钮,然后点击数据中心。 这样我们就能更有效地对我们的信息进行更改,同时保持对数据完整性的控制。 在本文的链接和下载部分可以下载的培训文档中解释完整的过程。

在这里查看我的博客 ,不要忘了跟踪我在 Twitter 网站上。 感谢你阅读 !



文章标签:数据  MAN  SYS  系统  INF  info  informat  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语