B\S备忘录19——就说多查查有好处

  放假之前接了个大活,说是要把工作流做活,做到登陆的学生提交申请,提交给老师,这个老师是根据组织结构查出来的。

  其实这个是基础系统自己的逻辑,查询数据而已,当时并没有多放多少精力在这上面。重点是另外一个,怎么把工作流执行的业务做灵活,具体要求就是改变绑定的业务时,不要改代码,起码不要改基础内部的代码。

  这个就感觉不简单了,查了一些工作流的资料,所有的绑定都是通过页面拖拽完成的,让我做一个这个出来好像是有点难度啊。

  然后,师姐把难度给我降低了,可以用配置文件做灵活。

  配置文件这个难度确实小了好多,这个时候我就想到了反射。之前写了篇博客,说是反射可以获得程序集中的所有的信息,然后就能实现动态配置。

  首先看看之前的代码吧,这里有一句

wfpCaseInstance.Handler =  StudentChange.AddStudentChange

  这句就是我的工作重点,首先就是如何用反射获得这个方法的信息,然后就是把这个方法创建一个委托,最后传过来。

//使用反射读取要执行的方法
            Assembly assemblyName = Assembly.Load(ConfigurationManager.AppSettings["assembly"].ToString()); //读取程序集
            Type classname = assemblyName.GetType(ConfigurationManager.AppSettings["className"].ToString()); //读取类
            MethodInfo methodName = classname.GetMethod(ConfigurationManager.AppSettings["methodName"].ToString()); //读取方法

            //创建一个委托,类型为工作流中的CodeActiveExecuting,方法信息为读取配置文件生成的方法
            CodeActiveExecuting handler =(CodeActiveExecuting)Delegate.CreateDelegate(typeof(CodeActiveExecuting),null, methodName);

            wfpCaseInstance.Handler =  handler;  //将创建的委托传给工作流
  配置文件中,写的是程序集,类,方法的名称。

<!--工作流执行的业务-->
    <add key="assembly" value="ITOO.BasicStudentClient" />  <!--程序集-->
    <add key="className" value="ITOO.Basic.Client.Workflow.ConnectionWorkflow.ConnectionWorkFlowManager" /> <!--类-->
    <add key="methodName" value="AddStudentChange" /> <!--要执行的业务方法-->
  这样就实现了最简单的灵活了,中间创建委托困扰了好久,下次好好总结一下委托。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值