设计复杂的工作流程图
我们的工作流程极其复杂,需要由准技术员工使用内部网络应用程序进行监控。大约有 30 个步骤,其中一些是手动的(编辑),一些是半自动的停止点(例如“文件已收到”或客户批准某些模板),还有一些是完全自动化的(文件转换、搜索索引、 ETC)。所有这些步骤的流程图又大又复杂,三个人可能同时处理三个完全不同的步骤。
您将如何向用户尽可能有用地呈现如此大量的信息?仅显示整个图表似乎是蛮力解决方案。但它很大,而且随着我们做的事情越来越多,它可能会变得更大。更不用说用 HTML 编码整个图表所需的复杂性了。
We've got a surprisingly complex workflow that needs to be monitored by a quasi-technical employees with an in-house webapp. There's about 30 steps, some of which are manual (editing), some are semi-automated stop points (like "the files have been received" or customer approval of certain templates), and some are completely automated (file conversion, search indexing, etc). The flowchart for all of these steps is large and complicated, and three people might be working on three completely different steps at any one time.
How would you present this vast amount of information as usefully as possible to your users? Just showing the whole diagram seems like the brute force solution. But it's big, and it'll likely get bigger as we do more things. Not to mention the complexity necessary to encode this entire diagram in HTML.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我假设您不想仅仅为了娱乐或嘲笑而展示这些内容,而是一路帮助用户,尽可能自动化,记录流程等。如果您明确定义应用程序的目标或用途,这可能会有所帮助。
我不认为展示整个工作流程有什么意义,除了“调试业务规则”或者客户可能希望看到它。
如果您的目标是帮助用户完成工作,我会介绍“项目”(或任何更适合的术语)的状态,以及可能的转换到其他项目州。
状态可能是多个主要独立的变量,例如一个可能描述内容的进度 - 例如“不完整”/“完整”/“由第二名工作人员审核”/“由第二名工作人员签署”,其他可能包含制定的时间表同时,例如“测试打印日期=未安排”、“打印日期=未安排”、“最终交付=明天,最好是昨天”。
转换可能是“交给客户审核”、“标记为内容完整”、“内容已修改”等。
这是您想要的吗?
I assume you don't want to show these just for entertainment or mockery, but help the users along the way, automating as much as possible, document the process etc. It would probably help if you clearly define the goals or purpose of your app.
I don't see a point in showing the entire workflow, except for "debugging the business rules" or maybe the clients want to see it.
If your goal is to help users do their job, I would present the state of the "project" (or whatever term fits better) is at, and possible transitions to other states.
The State might be multiple mostly independent variables, e.g. one might describe the progress of content - e.g. "incomplete" / "complete" / "reviewed by 2nd staffer" / "signed off by 2nd staffer", others might contain a schedule that is developed in parallel, e.g. "test print date = not scheduled", "print date = not scheduled", "final delivery = tomorrow, preferredly yesterday".
A transition might be "Seint to customer for review", "mark as content-complete", "content modified", etc.
Is this what you have in mind?
我建议将您的工作流程划分为模块,并表示每个模块的活动状态。
模块是主工作流程的子集。例如,它可以按任务、人员、角色、部门等进行划分。这将大大简化工作流程的表示。假设有人在许多关键时刻负责数据输入。我们可以将他的所有任务分组到一个模块(或子工作流程)中,其中包含相同的活动、输入、输出和条件。模块可以是相互依赖和相关的。
状态是我们在模块中所处的位置。在简单的工作流程中,只有一项活动任务。在现实生活中我们是多线程的!因此,也许在一个模块中,许多状态可以同时处于活动状态。状态还包括活动输入、输出和存储器位。
输入是执行评估布尔条件的活动所需的东西。它可以是一个文档、一段数据、一个信号...
输出是任务产生的结果:一个信息、一个文档、一个信号...
定义够了吗?
然后只需将您的工作流程转换为LADDER LOGIC,您就拥有了自己的状态!
请参阅 Wikipedia 上的梯形逻辑定义
您仅显示活动状态:
看起来很抽象?
这是一个小例子......
珍妮特在系统中输入数据。她管理图中的绿色任务。我们只关注她的工作,而不是其他任务。她知道如何完成工作流程中的 16 项任务。我们正在等待她继续执行以下操作,她的内联网仪表板显示:
优先级 1:您必须发送采购订单,根据销售报告订购下个月足够的铅笔。
优先级 2:您必须输入财务系统 生产中不合格的橡皮擦数量
我们对具有数十万个梯级的自动化生产系统进行了大量故障排除(工作流程太复杂,无法整体表示)。当系统被阻止时,我们查看每个模块并确定激活任务完成时缺少哪些输入。
祝你好运!
I propose to divide your workflow in modules and represent the active state for each module.
A module is a subset of your main workflow. For example it could be divided by tasks, person, roles, department, etc. This will greatly simplify the representation of the workflow. Let's says someone is responsible for data entry at many critical moments. We can group all his tasks in one module (or sub-workflow) containing the same activities, inputs, outputs and conditions. Modules could be inter-dependants and related.
A state is where we are located in a module. In simple workflows there is only one active task. In real life we are multi-threaded! So maybe in one module many states could be active at the same time. The state also includes active inputs, outputs and memory bits.
An input is something required to perform an activity for evaluation a boolean condition. It could be a document, a piece of data, a signal...
An output is something resulting from a task: an information, a document, a signal...
Enough definitions?
Then simply convert your workflow into a LADDER LOGIC and you have your states!
See Ladder Logic definition on Wikipedia
You display only active states:
Seems abstract?
Here is a small example...
Janet enters data in the system. She manages the green tasks of the diagram. We focus only on her work, not other tasks. She knows how to do 16 tasks in the workflow. We are waiting the following actions from her to continue, and her Intranet dashboard says:
Priority 1: You must send a PO to order enough pencils for the next month based on the sales report.
Priority 2: You must enter into the financial system the number of erasers rejected by production
We do a lot of troubleshooting on automated production systems having hundreds of thousands ladder steps (the workflow is too complex to be represented in a whole). When the system is blocked we look at each module and determine what inputs are missing to activation task completion.
Good luck!
这听起来像是 BPEL 适合的应用程序。
当然,您现在不想重新构建系统。但是有许多 BPEL 实现,其中一些包括图形编辑工具。其中之一可能会在您当前的情况下对您有所帮助,因为它们擅长处理范围和隐藏细节。因此,我认为即使您不使用该语言做任何其他事情,您也可能会从将工作流程绘制为 BPEL 图中获益。
维基百科页面列出了几个可用的实现。此外,Oracle 的 JDeveloper IDE 还包括一个 BPEL 制图工具,作为其 SOA 套件的一部分;不幸的是,它不再是标准安装的一部分,但仍然可用。 了解更多。
This sounds like the sort of application for which BPEL is suited.
Of course you don't want to re-architect your system right now. But there are a number of BPEL implmentations out there, some of which include graphical editing tools. One of these might help you in your current situation, because they are good at handling scope and hiding detail. So I think you might derive benefit from drawing your workflow as a BPEL diagram even if you don't do anything else with the language.
The Wikipedia page lists several of the available implementations. In addition, Oracle's JDeveloper IDE includes a BPEL Diagrammer as part of its SOA suite; unfortunately it is no longer part of the standard install but it is still available. Find out more.
尝试分层进行。您已经完成了最详细的层,现在添加其他文档,其中隐藏了详细信息,并分组到更高级别的业务流程中。用户应该能够安全地忽略其中一些细节,但了解自己的部分如何融入整体对他们来说是有好处的。
您可能需要不止一份更高级别的文档。
Try doing it in layers. You have the most detailed layer done, now add additional docs with the details hidden, grouped into higher-level business processes. Users should be able to safely ignore some of those details, but it's good for them to have visibility of how their part fits in to the whole.
You may need more than one higher-level document.
您可以使用 Prezi 以清晰的方式向用户呈现此信息。
这也将帮助用户验证他迄今为止为达到当前状态所做的操作。但随着用户完成的步骤数量的增加,这种呈现方式可能会变得很麻烦。假设用户几乎已经到达工作流程的末尾。为了检查下一步,他应该完成所有可能让用户感到沮丧的步骤。
为了避免这种情况,您可以将整个工作流程按时间顺序分为 3-5 个阶段。应按逻辑划分阶段。最终目标是不让用户因完整的工作流程而不知所措。就我个人而言,如果按照您所展示的方式呈现,我会尽力避免涉及此工作流程的任务。无意冒犯。我敢打赌你也有同样的感觉。
如果您可以在用数字替换州名称后重新发布图像,则可以为您提供更好的图片。
You can use Prezi to present this information to users in a lucid manner.
This would also help the user to verify the actions that he has done so far to reach the current states. But this way of presenting could become cumbersome for the users as the number of steps that he has completed goes up. Say the user has almost reached the end of the workflow. To check for the next step he should go through all the steps which might frustrate the user.
To avoid this you can split the complete work flow chronologically into 3-5 phases. The phases should be split logically. The ultimate aim would be not to overwhelm the users with the full work flow. Personally i would try to avoid the task involving this workflow if presented the way you have shown. No offense. I bet you also feel the same.
Could give you a better picture if you could re-post the image after replacing the state names with numbers.
我建议将整个流程记录在某处,但就分发给用户的内容而言,专注于面向任务的流程怎么样?没有一个用户会对我想象的整个过程负责。
例如,假设我有 2 个角色 A 和 B,以及 6 个任务(1 到 6),它们按顺序执行。每个任务可能有多个步骤,但都是独立的(例如下载文件、审阅、运行流程、再次审阅、上传)。 A 执行偶数任务,B 执行奇数任务。
A 需要了解包含任务 2、4 和 6 的详细步骤,但不需要了解 1、3 和 5 中发生的情况。因此,向 A 提供他负责的任务的一组详细流程,以及将每个任务视为黑匣子的图表。
如果流程不能以这种方式模块化,您可能需要检查流程本身以了解为什么它如此复杂。
I'd recommend having the whole flow documented somewhere, but in terms of what is distributed to users, how about focusing on task-oriented flows? No one user will be responsible for the entire process I would imagine.
For example, let's say I have 2 roles, A and B, and 6 tasks, 1 through 6, executed in order. Each task may have multiple steps but is self-contained (e.g. download the file, review, run process, review again, upload). A does the even tasks and B does the odd tasks.
A would need to know about those detailed steps that comprise tasks 2, 4, and 6 but not about what goes on in 1, 3, and 5. So hand A a detailed set of flows for the tasks he is responsible for, along with a diagram that treats each task as a black box.
If the flow can't be made modular in this way, you may want to review the process itself to see why it's so complex.
展示一个工作流程场景的示例(即展示一次可能通过工作流程的转换)怎么样?您可以将其迎合特定的用户配置文件,并突出显示相关状态,使其他状态变暗。这使他们能够通过查看现实生活中的示例来清楚地了解转换。
How about showing an example of a workflow scenario, that is, showing the transitions in one possible passing through the workflow? You could cater this to a specific user profile and highlight the pertinent states, dimming the others. This allows them to get a clear idea of the transitions by seeing a real-life example.