快速业务通道

使用silverlight构建一个工作流设计器(十七)-持久化数据到数据库

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

使用silverlight构建一个工作流设计器(十七)-持久化数据到数据库—设计webservices接口

在开始之间,先说下程序增加的一个小功能,就是给容器增加网格线的功能,使得容器看上去类似下面的样子

使用silverlight构建一个工作流设计器(十七)-持久化数据到数据库

当然可以有两种方法来实现,一种就是使用背景图片,但本文一贯的原色就是少用图片,多用silverlight的画图功能来实现,这些网格都可以使用xaml中的Line对象来实现。为此我们需要动态设定一个Canvas,然后把这些动态生成的Line对象添加到Canvas中,最后再把Canvas添加到容器里面,这里讲的比较简单,但是在程序中,还需要考虑回滚,Zindex的影响。下面的代码描述了动态增加网格线的功能。

Code
GridLinesContainer.Children.Clear();
SolidColorBrush brush = new SolidColorBrush();
brush.Color = Color.FromArgb(255, 160, 160, 160);
//  brush.Color = Color.FromArgb(255, 255, 255, 255);
double thickness = 0.3;
double top = 0;
double left = 0;
double width = cnsDesignerContainer.Width;
double height = cnsDesignerContainer.Height;
double stepLength = 40;
double x, y;
x = left + stepLength;
y = top;
while (x < width + left)
{
Line line = new Line();
line.X1 = x;
line.Y1 = y;
line.X2 = x;
line.Y2 = y + height;

line.Stroke = brush;
line.StrokeThickness = thickness;
line.Stretch = Stretch.Fil;
GridLinesContainer.Children.Add(line);
x += stepLength;
}
x = left;
y = top + stepLength;
while (y < height + top)
{
Line line = new Line();
line.X1 = x;
line.Y1 = y;
line.X2 = x + width;
line.Y2 = y;

line.Stroke = brush;
line.Stretch = Stretch.Fil;
line.StrokeThickness = thickness;
GridLinesContainer.Children.Add(line);
y += stepLength;
}

十七、保存到数据库—设计webservices接口

17.2 设计webservices服务接口

首先我们需要两个webservices服务,一个用户从服务器端下载流程xml描述文件,另一个将用户本地的流程xml描述更新到服务。

这个工作涉及到两个部分,首先在客户端需要作一些修改以适应目前这种情况。

另一个部分就是服务器端增加新的方法来持久化数据

17.2.1 webservices服务接口

在ShareDesigner.Web项目中增加一个WorkFlow.asmx服务页,增加两个服务接口方法。如下所示:

public class WorkFlow : System.Web.Services.WebService
{
/// <summary>
/// 获取工作流xml描述
/// </summary>
/// <param name="workflowID">流程ID</param>
/// <returns></returns>
[WebMethod]
public string GetWorkFlowXM(string workflowID)
{

return "";
}
/// <summary>
/// 更新流程xm
/// </summary>
/// <param name="workFlowXm">流程xml描述</param>
[WebMethod]
public void UpdateWorkFlowXM(string workFlowXm)
{

}
}

17.2.2 客户端方法实现

客户端首先添加webservices引用,名称空间为ServicesClient

从服务器获取工作流xml描述

if (!string.IsNullOrEmpty(WorkFlowUrlID))
{

System.ServiceMode.BasicHttpBinding bind = new System.ServiceMode.BasicHttpBinding();
System.ServiceMode.EndpointAddress endpoint = new System.ServiceMode.EndpointAddress(
new Uri(System.Windows.Browser.HtmlPage.Document.DocumentUri, "services/workflow.asmx"), nul);

ServicesClient.WorkFlowSoapClient wfClient = new Sha

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号