有没有支持用户自定义流程的编程方法

证明你是对的 2017-04-10 10:56:34
各位好,最近在用C#定制专用软件,内容无非是流程A B C D不同顺序的执行
但是发现每次不同要求 都需要不停改代码顺序 弄得很麻烦
有没有办法一次性编程,然后使用户可以自定义流程顺序去执行?
...全文
308 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 9 楼 angel6709 的回复:
目前支持全流程 if else switchcase foreach composed子流程 流程节点可以是UI(view)也可以是SaveService
如果是针对企业用户研发的一个产品,建议你们重新设计,完全扔掉这些。
  • 打赏
  • 举报
回复
如果你在工作流图设计器上看到一堆 basic 控制流语句,那么这种工作流通常不实用,用户接受不了。 给管理者(设计企业规则)使用的工作流系统跟给编程程序员(设计一个小脚本)用的工作流系统完全不同。前者几乎没有什么控制流语句,因为人际关系就是有向图网络,用不着什么编程语句来表示这个网络。如果把编程控制语句当作工作流,那么进入了一个误区,花了很大力气,做了不实用的系统。
  • 打赏
  • 举报
回复
工作流系统,其实有些类似邮件系统,它是人际关系、工作关系的网络的直接体现。但是它比邮件系统更强调文档的正规格式(例如使用 Excel 或者其它可以自定义界面的模板,而不是普通邮件文本),同时任务投递应该是自动执行的(而不是人工指定发送和抄送给谁),同时会对每一个工作的执行效率、反馈效率进行统计。如果说微信是社交平台,工作流就是工作平台,设计开发好工作流就系统相当于做好一个微信平台,而且更甚。 工作流每一个节点都始于用户通知(例如用户每天早上从微信上收到一个“新任务”通知),终于用户在文档编辑界面上点“提交按钮”。工作流的每一个可圈点的“点”其实都是用户交互,这种工作流系统其实围绕的全是用户交互,人与人的关系问题。 假设你所说的“无非是流程A B C D不同顺序的执行”是说的是一个节点内部的几个如 basic 的 if lese while for call 之类的控制语句,那么这其实就不算是一般所说的工作流系统了,而是微软.net 中那种根本不算是工作流的工作流概念了。这种工作流其实倾向忽略用户交互,只是关心几个编程语句之间的关系问题。
wanghui0380 2017-04-26
  • 打赏
  • 举报
回复
你需要建立一个dsl,当然dsl本身有简单有复杂(dsl-特殊领域语言) dsl是特殊领域语言,自然这东西看编写自己的意思,你可以简单的做,也可以复杂的做 比如简单的做,可以是直接使用xml配置,也可以直接使用ironpython,lua外接脚本控制 复杂的你就得自己设计一整套领域语言,然后自己解析他,自己执行他 下面是一个简单的基于xml配置的玩意 https://www.codeproject.com/Articles/1164009/Wexflow-Open-source-workflow-engine-in-Csharp
  • 打赏
  • 举报
回复
现在不清楚你对于应用的需求的研究和设计是基于什么来进行的。如果你脑子里考虑的就是一些几秒钟、几分钟执行的小程序的“工作流”概念,那么可能 WF 差不多适合。而且级真正的工作流应用,比如上面我说的涉及到2个月、几十人操作、并发处理和合并处理流程的企业工作流,则是一个真正的企业级工作流系统架构。而 .net 中的工作流 WF 其实根本不是这一类型的东西。
  • 打赏
  • 举报
回复
引用 5 楼 dyion1990 的回复:
[quote=引用 1 楼 starfd 的回复:] 你是要找工作流?
我看过工作流 不过没实际用过 不知道.net的工作流对于客户端的自由度是否高呢?如果每次都要重新编译一次,那也不方便呀~ 还望您多多赐教[/quote] .net 的工作流概念其实跟实际的工作流系统概念差距较大,不知道为什么 WF 会混淆为工作流概念。(呵呵) 实际的工作流通常是这样的,比如说一个领导安排一件“项目审批”任务,这个处理了第一个节点之后,产生了并行的8个子任务,先去分别跑政府8个子部门去审批,然后其中5个任务再合并为1个任务再合并为一个任务、再跑一个政府部门去审批,最后再把整个审批结果的4个合并起来,报财务部门处理,然后再报行政部门处理,再并行地送技术部门,然后再给领导审批,然后再存档入库。 在这个过程中,许多部分假设有审批不通过的情况(其实审批不通过也区分不同情况),根据每一种具体内容,又传递给不同的人去协助修改(例如属于技术的交给技术人员、属于财务的交给财务人员),修改完毕之后又交还给任务办事人员,继续走流程....... 这种工作流,单个工作流实例可能运行2个月。期间你们的系统重启了可能好几次,工作流也不会丢失。 而微软 .net 的所谓的工作流,就跟初中生学 basic 语言语句一样,是纠结在一个小程序的脚本上的,主要用于给例如SQL Server系统安装过程自定义之类的这种短暂的工作用的。它其实不是企业级的东西,它是针对那些替代自己随便写十几行 js 或者 vbs 代码的情况而设计的。它对应的是编程语句,其控制流程的语句根本不能针对企业文档来处理,在企业业务工作流中没什么用,主要是给玩儿一个计算过程用的。
证明你是对的 2017-04-26
  • 打赏
  • 举报
回复
引用 9 楼 angel6709 的回复:
目前支持全流程 if else switchcase foreach composed子流程 流程节点可以是UI(view)也可以是SaveService
感谢提供指导!
证明你是对的 2017-04-26
  • 打赏
  • 举报
回复
非常感谢思路指导!
证明你是对的 2017-04-26
  • 打赏
  • 举报
回复
引用 17 楼 sp1234 的回复:
[quote=引用 9 楼 angel6709 的回复:] 目前支持全流程 if else switchcase foreach composed子流程 流程节点可以是UI(view)也可以是SaveService
如果是针对企业用户研发的一个产品,建议你们重新设计,完全扔掉这些。[/quote] 目前我的打算就是重新写一个,原来那个虽然结构清晰,但是柔韧性太差,不考虑更新了
证明你是对的 2017-04-26
  • 打赏
  • 举报
回复
引用 17 楼 sp1234 的回复:
[quote=引用 9 楼 angel6709 的回复:] 目前支持全流程 if else switchcase foreach composed子流程 流程节点可以是UI(view)也可以是SaveService
如果是针对企业用户研发的一个产品,建议你们重新设计,完全扔掉这些。[/quote] hi 您好 我这边目前的状态: 1、软件为定制功能,仅仅公司内部使用,对于用户体验无要求 2、软件是一个上位机的测试软件,需要通过与下位机的硬件通信完成任务 3、主要功能完成ABCD等测试任务,目前顺序固定,由代码决定。 4、ABCD间无关联,分别是独立模块。 问题: 目前由于项目需要,要求按照不同次序执行测试任务,比如DCBA或DDBBAACC完成任务;由于实现的办法都是通过代码将步骤写死,所以每次有新的需求都需要重新编译,这样不仅效率低下,这样重新键入代码也存在一定风险;同时会产生多版本难以管理(因为不是专业软件公司,版本管理靠自己存档,见笑了) 期望: 希望可以将执行顺序、步骤开发给操作者,用一个类似LIST的结构将ABCD等方法由操作者根据其意愿添加,但我并不想用for、或者if else的结构去做,不知道有没有更好的建议?
angel6709 2017-04-10
  • 打赏
  • 举报
回复
我这里有,wpf的
Poopaye 2017-04-10
  • 打赏
  • 举报
回复
楼主是没听过说过if switch for while?
  • 打赏
  • 举报
回复
你是要找工作流?
angel6709 2017-04-10
  • 打赏
  • 举报
回复
目前支持全流程 if else switchcase foreach composed子流程 流程节点可以是UI(view)也可以是SaveService
angel6709 2017-04-10
  • 打赏
  • 举报
回复
angel6709 2017-04-10
  • 打赏
  • 举报
回复
所有界面跳转,通过URI来实现。 所有的参数传递,通过Session或Context来传递
  • 打赏
  • 举报
回复
workflow,微软有现成的,不过用起来挺麻烦,但怎么可能要编译呢……
证明你是对的 2017-04-10
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
你是要找工作流?
我看过工作流 不过没实际用过 不知道.net的工作流对于客户端的自由度是否高呢?如果每次都要重新编译一次,那也不方便呀~ 还望您多多赐教
证明你是对的 2017-04-10
  • 打赏
  • 举报
回复
引用 3 楼 angel6709 的回复:
我这里有,wpf的
思路是咋样呢。。。 还是while if for switch

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧