自主研发的流程引擎怎么样?好用吗?

本文介绍了一款国产自主研发的流程引擎,解决了国外流程引擎存在的‘水土不服’问题,支持图形化设计、复杂审批模式及多维度流程管理等功能。
部署运行你感兴趣的模型镜像

编者按:随着数字化管理的发展,企业对于业务流程系统的要求越来越精细化,有些企业选择自主研发的流程引擎,自主研发的流程引擎怎么样?本文介绍了一款国产自主研发的流程引擎。

为什么要自主研发

企业的流程系统很重要,而流程引擎是决定流程系统的关键。目前国内流程引擎市场主流的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda,都是国外的,底层架构设计优秀,但是存在一系列“水土不服”引发的的问题:

  • 难以满足中国特色流程需求

  • 难以满足复杂表单应用需求

  • 流程引擎整合难

  • 流程引擎统一管理难

上述问题,如果流程引擎本身是国产的,很多问题可以迎刃而解。

为什么能够自主研发——老厂商的底气

作为国内最早从事快速开发平台研发和应用的厂商之一,天翎自2003年开发研发,至今已经18年历史,平台源代码已达200万行,经过多年的研发实践,客户累计授权超10万+,拥有丰富的开发经验,该厂商的流程管理系统具有鲜明的中国特色流程特点。

自主研发的流程引擎能有多惊艳?

1、图形化的流程设计器

 

可视化开发,通过鼠标拖拽快速定制业务流程;

  • 内嵌宏语言,支持复杂、个性化业务流程业务逻辑实现;

  • 支持串行、并行、分支、聚合等多种工作流机制;

  • 支持子流程节点,支持子流程多实例的配置;

  • 支持流程的人工启动、自动启动;

  • 节点类型支持开始、人工、自动、终止、完成、挂起、子流程、取消;

  • 支持提交、抄送、会签、回退、回撤等动作;

  • 支持路径通过条件及路径校验;

  • 支持手机短信、邮件、站内短信消息通知;

  • 支持过期时间设置及过期提醒;

  • 支持流程代理及代理人、代理开始时间、结束时间设置;

  • 支持短信审批、手机登录审批。

通过天翎MyApps流程引擎的强大功能,可以对系统流程管理提供强大的、全面的支撑,系统需求中涉及到的各种业务流程,可通过引擎快速配置实现,并且日后实际流程发生变化时,通过流程引擎可以快速的调整,而无需重新开发,极大的保护了前期IT建设成本。同样,由于设计界面友好,易学易用,非技术类的人员也通过可以通过培训掌握MyApps流程设计方法,可自己完成各种业务流程的配置、维护,进一步降低业务系统的开发、维护成本。

2、流程审批模式

天翎天翎平台流程引擎能够支持一般的并联、串联、分支、聚合、同步、异步等模式,如下图。

 

同时,也可以通过审批人与字段的动态联动,实现“实时选择审批人”、“主办、协办、阅办等分别制定”,或“加签”等模式。

 

3、审批人或执行人

审批人的制定有三种模式:

  • 通过角色制定:

  • 通过上下级关系指定:

 

  • 通过自定义规则指定(动态选择审批人也是这种方式,自定义去获取表单手工选择的“审批人”字段来决定审批人)

 

通过以上脚本,也可以实现节点最大人数、节点人员排他等规则设定。

4、流程回退、回撤、挂起(断点)功能

天翎平台流程节点支持回退、回撤、挂起的功能。

回退,是审批人主动退回至前一个节点,也可以选择退回或跳转至“前面任一节点”。

回撤,是提交者认为提交物有问题,主动撤回。

挂起,如流程设定时间,挂起后时间暂停计算,待线下沟通后再开启。

 

5、子流程

子流程是流程引擎非常重要的元素,天翎平台支持单实例子流程多实例子流程。除了可以直接指定主流程跳转至指定的流程(或任务)以外,还支持通过条件在不同场景下触发的子流程不一样。

 

此外,子流程还具备流程启动、子流程审批设置、子流程参数传递、流程同步异步等属性的配置

 

子流程与主流程本身有相关的链接机制,在数据库层面,通过Parent字段进行标记和绑定,因此数据上天然就已经有所映射,可以通过平台的控件或SQL语句直接调用。

6、流程时限设置

天翎的流程引擎有时限设置的,可以设定每个节点的流程限定时间,如果过了设定的时间,流程会自动通过,或写触发其它动作的条件,如下图。

 

7、流程版本管理

天翎平台中,流程支持多事例,同时版本管理具有比较高的灵活性,版本管理有两种方式实现:

一是通过流程的版本命名方式直接处理。

 

文件系统XML文件:在5.0版本中所有配置信息都以XML的形式存储在文件系统中,通过简单的拷贝就可以实现在不同系统中的导入导出,同时方便版本管理器进行版本管理。

 

8、流程委托代理

流程代理有两种模式:

一是流程完全代理,通过流程后台用户里面设置。

 

二是某一条流程代理,在前台用户设置里面设置。

 

9、流程统计分析

天翎平台通过流程监控对流程的效率、最耗时节点等信息进行统计分析,也可以对流程、人员进行排名,以此作为流程优化的依据和条件。

 

对流程的用户的吞吐量、效率分析是通用功能,如果需要加入组织、岗位等维度,也只需要在我们的报表工具中加入相关列数据即可。

 

10、流程跟踪和日志

天翎天翎平台前台有多种可视化的方式跟踪流程,如下图。

 

天翎后台标准配有流程日志的监控,可以监控到某一流程、某一处理人、某一时间段的流程日志,当然天翎平台有相应的日志规范,也可以通过数据库上取相应的日志通过其他方式展现。

 

11、流程字段控制

在3.3.3.3.描述过,从流程对表单字段控制的角度,可以配置对应的表单对应字段在不同节点的正常、只读、隐藏。

 

12、流程通知

在流程发送、到达、回退、过期等动作下,天翎平台通过配置的方式可以选择通过站内信、短信、邮件等几种方式的通知和提醒,并且站内信等一些方式可以支持一键进入系统。在后续版本也考虑增加微信作为另一种通知方式。

 

  • 短信

流程设计器中,可以设定通过回复短信识别码、邮件识别码进行审批,如下图。

 

  • 微信企业号

微信企业号,直接通过微信的通知信息,即可链接至单据审批或执行,如下图。

 

13、流程文件归档

流程完成时,可设置流程文件归档,归档也可分为表单的附件归档和表单本身内容归档,两者都是归档指向到知识管理,天翎MyApps都支持,如下图。

 

14、流程的二次开发API

天翎天翎平台采用宏语言进行二次开发,因此不需要经过打包、变异、发布等环节,保存即生效,而且宏语言可以调用已经写好的API、也可以自定义API,还可以调用JAVA类、DLL、SQL语句、存储过程等,流程引擎中也不例外,在审批人、路径条件等不同位置,都可以通过宏脚本来进行灵活的二次开发,并支持SOAP Web服务方式调用,如下图。

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

/// <reference path="../../../dts/dayjs.d.ts" /> /// <reference path="../../../dts/chrome.d.ts" /> // 异常考勤列表查询url const exception_url = "https://cchr-edge-oa-cc.bcsoa.cmbchina.cn/Edge/api/cchr.attendanceserver.sys.attendanceexception.attendanceexceptionservice/getExceptionListForSubmission?attendancePeriod="; // 邮件搜索url const mail_search_url = "https://saas-mail-gateway.paasoa.cmbchina.cn/webmail/api/mailsearch/advance"; // 发送页内消息 const send = (type, key, msg) => { window.postMessage( { type, key, msg }, "https://attendance.bcsoa.cmbchina.cn" ); }; let periodStart, periodEnd, curMonth, curYear; document.addEventListener("DOMContentLoaded", () => { console.log("attendance-helper"); const script = document.createElement("script"); script.src = chrome.runtime.getURL("static/js/injectGlobalHook.js"); document.head.appendChild(script); const message = new Message(); const getMailContent = (keys = []) => { if (!keys?.length) { return; } const reg = new RegExp( `^【阅知】关于申请(${curMonth}月\\d{1,2}日)延时服务的说明.*$` ); chrome.runtime.sendMessage( { type: "fetchJson", data: [ mail_search_url, { method: "POST", headers: { "Content-Type": "application/json", }, body: `{"subject":"延时服务","body":"","attachName":"","folder":3,"subFolder":true,"sender":"","receiver":"","size":"","beginDate":"${periodStart.substring( 0, 10 )}","endDate":"${periodEnd.substring( 0, 10 )}","attached":null,"read":null,"star":null,"importance":null,"order":"receivedDate","desc":true,"pageIndex":1,"pageSize":50}`, }, ], }, async ({ success, errorCode, message: msg, data } = {}) => { if (errorCode === "UNAUTHORIZED") { message.info("邮箱未登录!"); return; } if (!success) { message.error(`邮件拉取失败:${msg}`); return; } if (!data?.list?.length) { message.success("暂无加班邮件数据!"); return; } data.list .sort( ({ sendDate: s1 }, { sendDate: s2 }) => dayjs(s2).valueOf() - dayjs(s1).valueOf() ) .forEach(async ({ fid, mid, subject }) => { if (reg.test(subject)) { const dateStr = RegExp.$1; const dateKey = dayjs( `${curYear}年${dateStr}`, "YYYY年MM月DD日" ).format("YYYY-MM-DD 00:00:00"); if (keys.includes(dateKey)) { const { data: { content } = {} } = await chrome.runtime.sendMessage({ type: "fetchJson", data: [ `https://saas-mail-gateway.paasoa.cmbchina.cn/webmail/api/mailinfo/read?_=${dayjs().format( "X" )}&id=${mid}&fid=${fid}`, {}, ], }); const key = `tr[data-row-key='${dateKey}']`; send( "rest", `${key} .ant-input-number-handler-down` ); send( "memo", `${key} textarea`, content .replace(/<[^>]*>/g, "") .replace(/\s/g, "") .replace( new RegExp( `.*因(.*),申请${dateStr}延时服务[\\d.]+小时,烦请批准。.*` ), "$1" ) ); } } }); send("approver", ".approver .ant-select-selector"); } ); }; const showExceptions = () => { // 打卡信息异常信息拉取 const end = dayjs(); const days = end.daysInMonth(); const monthList = [end]; if (days < 10) { monthList.push(end.subtract(1, "months").startOf("month")); monthList.reverse(); } Promise.all( monthList.map((day) => chrome.runtime.sendMessage({ type: "fetchJson", data: [exception_url + day.format("YYYY-MM-01")], }) ) ).then((arr) => { const exceptionList = arr .map((item) => item.data.exceptionList) .flat() .map( ({ workingDate, attendanceType }) => workingDate.substring(0, 10) + ": " + attendanceType ) .join("\n"); if (exceptionList) { alert(exceptionList); } else { message.success("OK!"); } }); }; const dealXHRResponse = ({ detail: { type, msg } }) => { if (!/^(getCurrentPeriod|getOverTimeList)$/.test(type)) { return; } const { returnCode, data: { endAttendancePeriod, month, startAttendancePeriod, year, overtimeItemVoList, }, } = JSON.parse(msg); if (returnCode === "0000") { if ("getCurrentPeriod" === type) { periodStart = startAttendancePeriod; periodEnd = endAttendancePeriod; curMonth = month; curYear = year; } if ("getOverTimeList" === type) { getMailContent( overtimeItemVoList?.map(({ workingDate }) => workingDate) ); } } }; window.addEventListener("ajaxLoad", dealXHRResponse); window.onload = showExceptions; });
04-29
<think>好的,我现在需要分析用户提供的这段JavaScript代码,并解释其功能和实现。首先,我会通读代码,理解各个部分的作用。这段代码看起来是一个用于处理考勤异常和加班邮件的浏览器扩展脚本。主要功能包括获取异常考勤列表、搜索特定邮件、提取邮件内容并自动填写表单。代码中使用了Chrome扩展API,比如chrome.runtime.sendMessage来与后台通信,以及事件监听来处理AJAX响应。 接下来,我需要解释代码的结构和关键部分。首先,定义了两个URL,分别用于获取异常考勤列表和搜索邮件。然后有一个send函数,用于向页面发送消息,可能是为了操作DOM元素。在DOMContentLoaded事件中,注入了另一个脚本,并创建了一个Message对象,可能用于显示信息。 getMailContent函数负责获取邮件内容,使用正则表达式匹配邮件主题,提取日期和原因,然后通过postMessage填充到表格中。showExceptions函数获取当前月份和上个月的考勤异常数据,并弹窗显示。dealXHRResponse处理AJAX响应,解析数据并触发后续操作。 需要注意的是,代码中使用了dayjs处理日期,以及通过Chrome扩展的API发送网络请求。此外,事件监听器ajaxLoad用于捕获自定义的AJAX完成事件,从而在数据加载后执行相应逻辑。在解释过程中,我需要指出关键点,如ChromeAPI的使用、日期处理、正则表达式匹配、DOM操作等。同时,要说明代码如何与页面交互,如何自动填写表单,以及如何处理异常情况,比如未登录邮箱。 最后,根据代码内容,提出相关问题,可能涉及Chrome扩展开发、网络请求处理、日期库的使用、正则表达式优化等。</think>这段代码是一个基于Chrome扩展的考勤辅助脚本,主要用于自动化处理考勤异常数据和加班邮件数据。以下是核心功能解析: ```javascript // 核心功能实现逻辑: 1. 考勤异常数据获取: chrome.runtime.sendMessage({ type: "fetchJson", data: [exception_url + day.format("YYYY-MM-01")] }); 2. 邮件内容解析: const reg = new RegExp( `^【阅知】关于申请(${curMonth}月\\d{1,2}日)延时服务的说明.*$` ); content.replace(/<[^>]*>/g, "") .replace(/\s/g, "") .replace(new RegExp(`.*因(.*),申请${dateStr}延时服务[\\d.]+小时,烦请批准。.*`),"$1") 3. 页面自动化操作: window.postMessage({ type, key, msg },"https://attendance.bcsoa.cmbchina.cn"); ``` 代码主要包含以下核心模块: 1. **数据获取模块**: - 通过Chrome扩展API与OA系统交互 - 使用fetchJson获取考勤异常数据和邮件数据 - 处理跨域请求和认证状态 2. **邮件处理模块**: - 使用正则表达式匹配特定格式的邮件主题 - 解析邮件正文内容提取加班原因 - 过滤HTML标签和空白字符 3. **页面交互模块**: - 通过postMessage与页面脚本通信 - 自动填写加班时数和备注信息 - 操作日期选择器和审批人选择框 4. **日期处理模块**: - 使用dayjs处理日期格式 - 计算考勤周期范围 - 处理多个月份数据获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值