请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
Carly(uid:222366)
一头扎进书堆儿里的萌崽~ 职业资格认证:FCA-FineReport
【已下架插件文档】流程引擎插件
该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。   1. 版本   报表服务器版本 JAR包   流程插件版本   JDK  11.0 2020/11/08及以上 V2.0.8及以上 JDK 1.8 且小版本需在 JDK8u102 以上 2. 描述 流程引擎插件适用于偶发的,由具体人员主动发起的任务流程,支持灵活审批和动态流转,可以支撑一般的办公场景。 流程图绘制:拖拽控件可视化编辑,BPMN2.0 规范 流程执行:发起流程、从模板发起、定时发起 流程监控:独立的待办、已办页面、审批前撤回 分支结构支三种网关:互斥、并行、包容 条件流转:可灵活调整流程方向 会签转办:可自由设置节点处理人 而上报适用于由管理员(领导层)发起的,低级别人员填写,逐级审批,规则,周期固定的任务流程。 3. 插件安装   3.1 获取插件 插件无法在设计器内,以及设计器附带启动的工程中安装使用,需要独立部署,推荐使用 Tomcat 容器。 Tomcat 服务器部署好后,以管理员身份登录决策平台,在 管理系统>插件管理 下搜索「流程插件」安装; 或者前往帆软市场下载「流程插件」进行插件包本地安装,安装过程详细点击 服务器插件管理。 插件目前维护中,暂不支持直接从帆软市场下载,但不影响老版本用户的更新升级。 3.2 初始配置 3.2.1 配置引擎外部数据库 1)成功安装流程引擎插件后刷新决策系统,会发现 管理系统 下多了一个 流程插件 按钮,具体情况如下图所示: 2)流程引擎需要依赖外部数据库使用。插件下载完成后,请根据实际情况配置外部数据库连接和账户密码。 点击保存按钮。 若想确保数据库配置信息的正确性,建议先把相同的配置信息在 FineReport 设计器里连接一下,确认可连接成功后再点击保存按钮,在弹出的对话框中点击确定。 注1:搭配外置数据库:目前支持Mysql、SQL Server、Oracle。 注2:如果后期数据库迁移需要调整数据连接,也可以在此处修改,重启后即可生效(无需再进行下一步)。 注3:初次安装并配置数据库信息后需重启tomcat,重启后会初始化数据库信息。 此时查看刚刚配置的数据库,发现在手动重启容器的过程中,原本为空的数据库中出现了流程引擎插件自动创建的数据表。 3.2.2 挂载引擎页面 点击管理系统>目录管理,新建一个目录,选中该目录,在该目录中点击添加链接会弹出对话框,在链接路径中输入以下表格中所提供的链接,即在 「webroot」 (替换为实际的工程名)后加上对应的路径,下面的列表展示了插件提供的所有链接及对应的页面说明。 新建流程的链接为: /webroot/decision/tw/workflow/pc/build 流程引擎插件共提供六个链接 注:「webroot」为 Tomcat独立部署 时实际工程名。 下表为PC端流程引擎插件所提供的所有链接结尾: 名称 链接(结尾请注意大小写和扩展名)     说明   创建流程图 /webroot/decision/tw/workflow/pc/create 管理员端:流程图绘制器页面,可以制作新的流程模型 部署列表 /webroot/decision/tw/workflow/pc/deploy 管理员端:对流程模型进行相关操作,比如部署/删除等 所有流程列表 /webroot/decision/tw/workflow/pc/control 管理员端:对正在执行或已经结束的流程进行管理,包括详情查看和删除 新建流程 /webroot/decision/tw/workflow/pc/build 用户端:展示所有可以发起的流程,点击连接立即发起 待办  /webroot/decision/tw/workflow/pc/deal 用户端:所有尚未结束的流程中停留在该用户节点的列表 已办  /webroot/decision/tw/workflow/pc/history 用户端:该用户发起的所有当前节点不是本人的流程 下表为移动端流程引擎插件所提供的所有链接结尾(支持配置到 FineMobile、企业微信、钉钉): 名称 链接(结尾请注意大小写和扩展名)     说明   新建流程 /webroot/decision/tw/workflow/mobile/build 用户端:展示所有可以发起的流程,点击连接立即发起 待办  /webroot/decision/tw/workflow/mobile/deal 用户端:所有尚未结束的流程中停留在该用户节点的列表 已办  /webroot/decision/tw/workflow/mobile/history 用户端:该用户发起的所有当前节点不是本人的流程 注1:本插件需要依赖报表决策平台,暂时不能独立连接使用或直接嵌入其他系统。 注2:请用管理员身份登录 Tomcat 部署成功的决策平台,将这六个链接添加到目录下使用。 注3:不支持移动端提交流程   3.3 插件更新 每当合作伙伴更新功能时,流程引擎插件将会提升一次版本号,这样用户将会收到更新提示。   3.4 删除插件 删除流程引擎插件将会自动清除流程程序文件,请在删除插件后重启容器。请注意您的流程数据库不会被清除。 4. 创建第一个流程   4.1 流程绘制界面介绍 1) 布局和按钮 工具栏:提供了保存撤销,剪切复制等基本功能,并支持对齐放大等美观功能。 节点区:提供了事件,任务,网关等流程元素。 画布区:将节点拖拽到画布,再加上连接线构成最终的流程图。 属性栏:点击画布中的具体节点或连接线,此处会出现对应的属性配置项。 2)节点说明 插件当前版本支持三种类型的节点:事件,任务,网关。 事件:用来表明流程的生命周期中发生了什么事。在 BPMN2 规范中,事件总是画成一个圆圈。 Gateway:是 BPMN2 规范中的流程定义元素,中文可称为「网关」,「决策」,「判断」。网关用来控制流程的执行流向,当在拆分路径时产生令牌,在合并路径时消费令牌。 任务:是业务流程定义的核心元素,中文可称为「活动」,「节点」,「步骤」。一个活动可以是流程中一个基本处理单元。   4.2 简单的一级和多级审批 4.2.1 开始节点 流程总是需要一个开始节点,在简单的一级和多级审批中,采用「开始事件」作为开始节点。将节点区中的「开始事件」拖拽到画布区中,如下图所示: 观察下方的属性栏,「名称」一栏可以为当前节点添加备注,点击「请填写」,将自动展开一个文本框,支持键入中文,文本框中输入的内容会展现在画布区该节点的周围,如下图所示: 绝大部分节点元素和连接线都支持添加名称,名称显示的位置略有不同,如下图所示: 节点名称会出现在「任务列表」中标明流程当前的状态,如果没有配置名称,就会出现如下图所示的提醒: 4.2.2 用户任务 用户任务是最为常用的流程节点,用来表示业务流程中由人参与完成的工作。当引擎处理到该节点时,给指定的用户(参与者)或者一组用户(如部门、角色)创建待处理的任务项,等待用户的处理。在当前的流程绘制器中,除了手动拖拽用户任务节点到画布之外,还有一种方式创建用户任务。 首先选中之前创建的开始节点,然后在其附近出现的快捷工具箱中点击用户任务的小 ICON,如下图所示,即可生成用户任务并自动与开始节点相连接。 如果采用直接拖拽的形式添加了用户任务,还需要为两个节点之间添加连接线:按住下图所示的连接线标志,拖拽到用户任务节点上,直到节点周围出现绿色标记松开鼠标,即可创建连接线。 在复杂的流程结构中,经常会出现需要手工操作连接线的情况。鼠标移动到连接线上,连接线两端会出现可以操作的绿色原点,按住绿点不放拖拽到其他节点可以让连接线连接的对象改变。 用户任务的属性部分比较复杂,这里只介绍基础的审批过程中会用到的一些。 首先是「分配用户」,分配用户指的是该用户任务节点需要谁来完成,点击「添加办理人」后的请选择办理人会弹出一个分配用户的对话框。 在办理人中可以添加用户名以指定流转到对应的用户(比如 Lily)。 注:开始节点后紧跟的第一个用户任务节点, 是发起人节点,必须要填写一个公式,该公式要求指定一个变量名来保存发起人用户名信息,公式语法:${变量名称} 例如 ${people},如下图所示: 如果第一个节点没有放置参数${people},将导致后续流程部署后创建流程为空白,不能出现发起流程。 这个变量可以利用到后面的流程中,比如再新建一个用户任务节点,给新节点分配用户的时候,依然填写 ${people},这样就建立了一个自己审核自己的流程。 当然通常情况下,需要设置一个不一样的人员来审核发起人提交的信息。除了直接填写一个 Lily,还可以在下面的用户树当中选择。 如果流程中需要多个节点,添加多个用户任务并指定相应的审核人员即可。在这里我们用两个审核节点做为示范。 其次是「表单编号属性」,表单编号实际上就是每个节点所要挂载的 cpt 路径,点击后面的请填写会弹出对话框,打开一个文件树,用户选择对应的模板即可。 不同的节点支持挂载不同的模板,比如某些情况下,填报人和审批人需要看到不同的模板,或者需要多个填报人填报不同模板的数据。 注流程引擎提供了一个参数帮助用户主动管理填报上来的数据,即 「requestid」。每当流程执行的时候,都会生成一个唯一的 「requestid」。可以在数据连接中使用这种方式来过滤每条流程所能看到的数据。(具体使用方法详见流程插件示例) 例如: select * from qingjia where id ='${requestid}' 注:插件目前只支持挂载 cpt 模板,使用老填报预览,不能使用表单。必须设置模板填报属性,支持数据校验。 4.2.3 退回 既然有审核操作,则会产生「通过」和「退回」两种选项。「通过」则进行正常流转无需其他操作,本插件在用户任务中自带支持退回的功能,不需要画额外的连接线。 点击「审核节点2」,在属性栏中找到「是否能退回」,勾选即可。 这样任务在执行过程中就会出现「退回按钮」,插件支持越级回退,点击的弹出框中可以指定要退回到哪个节点并且可以添加退回备注。 4.2.4 按钮名称 请注意上一节截图中的按钮,提交,保存和驳回,有些时候不能恰当的表述个性化流程中的实际操作,比如「提交」实际上应该是「审核」。 此时就可以在用户任务属性栏中找到「提交按钮名称」和「退回按钮名称」这两项,点击后面的「请填写」会出现类似「名称」的文本框,键入即可替换默认的按钮文字,支持中文。 4.2.5 结束节点 流程有始有终,在两个审核节点之后,如果没有回退,任务就应该结束了,此时如图点击工具箱中的结束事件 ICON 即可自动生成结束事件并与该节点相连接。 当然也可以手动拖拽结束事件到画布中来,并自行添加连接线。如下图所示就是一个完整的二级审批流程。   4.3 节点自动流转 1) 一般自动流转 该属性只适应于「添加办理人」栏位中的单任务办理人,「抢占式」与「会签」不适用走到该节点系统会自动办理,但不会触发模板提交事件。 找到用户任务属性栏中的「是否自动流转」勾选即可生效。 2)二次默认通过 通常和退回搭配使用,比如两级审核,第一级已经通过,第二级驳回了申请,跨级回退到了申请人。申请人修改申请后,使用二次默认通过功能,任务就会自动跳过第一级审核人,提高了效率。 在用户任务属性栏中找到「第一次通过,下次默认通过」勾选即可生效。   4.4 指定处理人的流程 比如在一个通用的功能迭代任务流程中,任务流转到研发小组长,需要小组长来手动分配具体的研发来开发这个功能,这个人是无法在流程中事先指定的,具有比较高的灵活性。插件支持这种场景。首先我们在研发小组长的节点属性栏中找到「下个任务节点办理人」,在后面的文本框中输入某个单元格值,比如 B8,引擎执行到这里的时候将会解析此节点对应挂载 cpt 模板的 B8 单元格,将 B8 单元格的值保存到引擎中。在设计实践中,通常 B8 单元格会是一个下拉菜单控件,里面包含了研发组员列表。 在后续的研发组员的节点属性栏中找到「添加办理人」,在办理人栏中填入 ${B8} 即可。(类似于开始节点中${people}的变量引用) 目前只支持用单元格控件填报传参,插件目前只能获取到单元格的值   4.5 候选、会签与转办 4.5.1 候选(抢占式办理) 在「添加办理人」的时候,我们会发现对话框中还提供了输入「候选人」的地方,这里可以指定多个办理人,每个办理人都可以收到任务,但是只要其中一个完成审批,那么其他人就看不见任务了,相当于组任务。比如财务部门的发票报销审核处理等。这个不同于会签。请注意使用候选功能处理抢占式场景时,保持「办理人」一栏为空。 4.5.2 会签(多用户同时办理) 有时候一个节点需要多个用户同时确认才能往下流转,会签就提供了这样的功能。首先在节点属性栏中找到「节点类型」一项。引擎提供了两种模式,「parallel」模式表示所有的会签人都能同时收到待办,「sequenial」表示会签人会接连收到待办。 然后,在节点属性栏中找到「添加会签人」属性,点击后面的请填写会弹出添加会签人对话框,在这里可以勾选多个会签用户。 4.5.3 加签——增加会签参与人 在特定流程中的某些审批项可能不仅是办理人可以独立处理的,比如预算审批不仅需要主管领导还需要财务部门负责人,需要灵活指定加签人。 在确认正确选择「节点类型」一项之后,找到「是否加签」一项并勾选。 此时,该节点的流程详情页右下角会增加一个加签的按钮,点击之后会弹出人员选择框,可以添加新的会签人。 4.5.4 转办——移交处理人 有这样的场景:部长有事,某个审批任务可以暂时交由副部长处理。这时候就需要转办功能。在节点属性栏中找到「是否允许转办」属性,勾选即可。流程执行过程中会出现转办按钮,点击会弹出用户列表,选择一个用户即可将任务移交给对方。   4.6 三种网关类型(动态流转) 4.6.1 互斥网关 互斥网关定义了一组分支的唯一决策,所有流出的分支被按顺序评估,第一个条件被评估为 True (当多个条件为true时,第一个决策被执行)的分支被执行,并且不再继续评估下面的分支。如果所有分支条件决策都为 False 且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程建模设计上应避免这种情况发生。互斥网关有分支和合并两种行为,允许一进一出。 下图给出一个排他网关的示例。网关 A 评估后继三个分支,如果变量 Var1 等于 1 执行 Service1 路径,如果变量 Var1 等于 2 执行 Service3 路径,如果都不通过执行 Service2 路径;如果 Service1 或 Service2 被执行,网关 B 做路径合并,后继 Service4 路径被执行,流程结束;如果Service3 被执行,流程结束。 可以通过拖拽或者点击工具箱 ICON 来创建互斥网关。 选择一条连接线,在下面的属性栏中找到「条件」,即可为该连接线添加判断条件,条件应该是一个输出值为布尔值的帆软公式,例如B8>7   ,引擎将会基于网关前的用户任务挂载的 cpt 模板计算该公式的结果。例如一个请假流程中,如果填报的时长超过一周,就需要人事经理来审批而不仅仅是部门领导。 注1:条件并不是写在网关,而是写在连接线上。 注2:「默认流」功能暂时无效,请勿勾选。 4.6.2 并行网关 并行网关用于无条件的拆分或合并分支,该类网关对连线条件是忽略的。并行网关有分支和合并两种行为,允许多进多出。 下图给出一个并行网关的示例。网关 A 拆分了三个分支,Service1 和 Service2 执行完毕后被网关 B 合并继续执行 Service4;网关 C 等待Service4 和 Service3 执行完毕后,流程结束。 注:引擎执行并行分支时,同一时刻只执行一个路径直至该路径被中断或结束,然后再依次执行完剩余的路径,而不是在同一时刻同时执行 Service1,Service2 和 Service3 路径。 4.6.3 包容性网关 包容网关是排他网关和并行网关的综合体。当进行决策判断时,与排他网关所不同的是,所有条件为 True 的后继分支都会被依次执行,如果所有分支条件决策都为 False 且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程设计上应避免这种情况发生。包容网关有分支和合并两种行为,允许多进多出。 下图给出一个包容网关的示例。网关 A 评估后继三个分支,如果变量 str1 等于 a 执行 Service1 路径,如果变量 str2 等于 b 执行 Service2 路径,如果变量 str3 等于 c 执行 Service3 路径;网关 B 做路径合并,流程结束。 4.6.4 最佳实践——巧用 FR 公式灵活流转 还可以利用 FR 公式中丰富的扩展函数来实现更加灵活的流转。 公式 场景 AND(B1>2,C15=10000)  以及类似的逻辑类函数 合并多个条件等 搭配互斥网关的随机函数 RANDBETWEEN(-1,1)=1 随机流转 2008-08-08>TODAY()  等日期时间类函数 在某个特定时间流转到特定人 SQL('dev','select * from ww',1,1)=1 等数据库类函数 访问异构系统数据信息辅助流转 $fine_username='admin' 支持使用参数 4.7 两种定时事件 待补充   4.8 服务任务和邮件任务 待补充 5. 部署流程模型   5.1 流程分类管理 进入「部署列表」页面,通过设置多个分类方便用户快速找到对应的流程。点击新增按钮可以增加一个分类,在分类名称列中输入类名并点击保存。   5.2 部署流程模型 流程图绘制完毕后点击左上角的保存按钮,在弹出的对话框中输入模型的名称,并选择之前在「流程分类管理」里设置好的分类点击保存并退出按钮。 进入「模型列表」页面,找到刚刚保存的流程模型,点击部署按钮,部署成功按钮会变成「已部署」,用户就可以在「新建流程」页面找到刚刚绘制的流程。 还可以为流程模型设置访问权限,即只有选定的人才能发起对应的流程,进入到「部署列表」页面,点击对应模型的设置权限按钮。在弹出的对话框中勾选相应的对象给予流程发起权限,支持选择「部门-岗位-人员」或者「角色-人员」,点击确定即可生效。 为了方便权限的复用和管理,插件提供流程权限导入导出的功能,点击保存权限超链可以将当前的权限用一个别称保存下来。 其他流程导入权限时可以快速应用。   6. 流程执行与监控   6.1 发起流程 用户进入「新建流程」页面将会看到所有已经部署好的流程,根据流程图保存时选择的分类分开排布。 点击一个流程名称即可发起该流程。进入流程详情页面。 注:如果该流程不被部署,任务是不会真正创建的。 还可以在其他普通的模板中发起一个流程,只需要写简单的 JS 把下面的字符串拼接成 URL 并在新 Tab 页打开即可,注意需要在平台内打开。 JS 写法格式如下:   processInfo/authority?depid=depid&proname=encodeURI(name)&processDefinitionID=processDefinitionID&userName=userName 完整的 JS 实例如下: window.parent.FS.tabPane.addItem({    title: "技术问题反馈",    src: "http://localhost:8080/webroot/processInfo/authority?depid=5006&proname=encodeURI(流程图)&processDefinitionID=process:1:5009&userName=admin"}) JS 发起流程有三个关于流程的参数,参数值可以在流程表 act_re_procdef 里查询到,参数说明如下表所示: 公式   场景   depid 需要流程部署id name 流程名称 processDefinitionID 流程定义id   6.2 待办和已办 6.2.1 待办系统消息提醒 当某个流程流转到当前用户节点时,会在右下角弹出提醒,提示用户处理特定流程的待办事务,点击处理超链接则可以主动跳转到对应的流程详情页面。 如果当前用户不在线,则在用户下一次登录时弹出提示框。 同其他系统消息类似,还可以在右上角登录用户旁边的铃铛看到消息提醒,点击可以进入对应的流程详情页面。 或者查看全部消息可以在系统消息列表中,看到所有类似的消息提醒。同样,点击后面的「处理」超链接可以直接进入对应的流程详情页面。 6.2.2 待办页面 「待办页面」显示所有尚未结束的流程中停留在该用户节点的列表。包括「待办任务列表」和「待办保存列表」。 点击操作列中的办理可以跳转到对应的任务。 流转回发起人的待办可由发起人自行删除。 6.2.3 已申请和已办理 「已申请」页面显示该用户发起的所有流程,可以执行详情或撤回操作。 「已办理」页面显示当前用户参与过的流程,可以执行详情操作。 「详情」操作将会打开一个类似的流程详情页面,显示流程内容,流程图和审批意见,但是用户将没有对应的操作权限。   6.3 撤回和保存 用户新建流程之后,需要修改,可以在下个环节处理前点击「已办」页面对应流程的撤回按钮。 该操作将会把这个任务恢复到流程发起之初,用户可以在「待办」列表中找到该任务,并重新办理。 原本已办页面中的操作项将会变成「详情」和「删除」,删除操作将会直接关闭这个任务。 此外,某些流程处理环节可能比较复杂,无法一次性完成,所以流程引擎提供了保存的功能来存储当前的工作状态(填报暂存)。点击流程节点任务页面右下角的保存按钮,保存后的流程可以在待办保存列表中找到。     6.4 审批意见 流程详情页的下方可以提交意见,并添加有关附件,所有环节的意见都会按照顺序显示在下面的批注信息中。 可以在绘制流程图的时候,指定是否需要某个用户任务节点强制填写意见。如果勾选了该项,用户未填意见时系统会弹框提示,流程无法流转。 注:填写的意见数据是存在流程插件配置的数据库中的   6.5 流程图 进入流程详情页面,点击流程图,可以看到该流程对应的流程图,并可以直观的看到流程的进展情况。   6.6 管理员管控流程执行 进入「所有流程列表」页面,可以看到所有进行中或者已经完成的流程,管理员可以随时删除终止正在运行的流程,或者点击详情链接查看所有流程的具体进展。 到这里流程插件的说明已讲解完毕,具体示例请点击流程插件示例  
【已下架插件文档】条形饼图组合图
该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。   1. 版本 1.1 版本 报表服务器版本 JAR 包版本 插件版本 10.0 2017-08-15 V1.1.0 1.2 应用场景 现在提供条形饼图组合图插件,支持条形图与饼图或南丁格尔玫瑰图的组合图。 组合展现不同分类下的多个系列的详细信息,还支持时间轴功能,支持更高维度上的数据筛选,适用于展示型的数据报告或者作战大屏。效果如下图所示: 1.3 功能介绍 支持条形图与饼图或南丁格尔玫瑰图的组合图,组合展现了不同分类下的多个系列的详细信息。 支持时间轴功能,支持更高维度上的数据筛选,可以根据用户的配置自动轮播。 适用于展示型的数据报告或者作战大屏。 2. 插件介绍   2.2 操作方法 1)打开设计器,点击图表,选择条形饼图组合图控件,拖拽至相应的 frm 报表。 2.3 属性设置 2.3.1 数据 注:暂不支持单元格数据。 1)数据集数据 2.3.2 样式 1)基础 此处可设置标题、背景、配色。 2)时间轴 此处可设置时间轴是否显示、播放形式及播放间隔等。 3)坐标轴 可设置X轴、Y轴样式。 4)饼图 此处可选择南丁格尔图展现形式、圆心位置、半径等。 5)标签 此处可设置是否显示标签、标签的位置、标签的样式及内容。 6)提示 此处可设置是否显示提示及提示的样式。 3. 示例 3.1 数据准备 新建如下图所示内置数据集,重命名为2020全国宏观经济指标。 3.2 报表设计 1)新建决策报表,修改body组件布局方式为绝对布局,将条形饼图组合图拖拽到报表设计主体中,调整条形饼图组合图的框体大小。 2)如下图绑定好条形饼图组合图的数据信息。 3)如下图设置图表标题,背景、配色选择默认。 4)如下图设置图表的时间轴,可采用默认设置。 5)如下图选择坐标轴样式。 6)如下图设置饼图,可采取默认设置,也可勾选展现为南丁格尔图。 7)如下图设置标签。 8)如下图设置提示。 3.3 效果预览 1)保存报表,点击PC端预览,条形饼图组合图展示示例如下: 2)保存报表,点击PC端预览,勾选为南丁格尔图,条形饼图组合图展示示例如下: 注:不支持移动端。
【已下架插件文档】登录集成插件
该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。   1. 概述 1.1 版本 报表服务器版本 JAR 包版本 插件版本 10.0、11.0     1.2 应用场景 通过JWT加密用户信息生成第三方TOKEN,用于实现1、跨域单点登录2、配置用户创建策略,认证完成后实现在帆软平台中创建用户信息3、用于换取帆软fine_auth_token(用于帆软平台接口的调用) 2. 配置说明 2.1 帆软平台地址  帆软平台的访问地址,示例:http://localhost:8075/webroot/decision,该配置用于跳转操作读取帆软平台地址 2.2 JWT秘钥值 用于 third_token 解密,需要与生成 third_token 使用的 key 一致。 2.3 认证完成创建用户 third_token 校验通过之后,开启该功能会按照如下规则在帆软平台创建用户信息。 创建远程连接同名目录:开启配置,token校验通过后,会在 reportlets 下创建同用户名的文件夹,并赋予用户该目录的远程设计目录权限 用户创建策略:           仅用户名       创建 third_token 时,subject 字段须为用户名,示例如下: // 示例KEY,用来解密 third_tokenString key = "FineReport2018";// 用户信息String subject = "zhangsan";// 超期时间 msDate expireTime = new Date(new Date().getTime() + 6000000);//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(subject)        .compact();System.out.println(token);        包含部门职位        创建 third_token 时,subject 字段须为JSON格式字符串,示例如下: JSONObject userInfo = JSONObject.create()                .put("username", "zhangsan")                .put("department", JSONObject.create().put("name", "beijing").put("id", "02"))                .put("roles", JSONArray.create().add("业扩").add("部长"))                .put("platformType", JSONArray.create().add(1).add(4));/*** 实际生成数据示例:* {*  "username": "zhangsan",*  "department": {*  "name": "beijing",*  "id": "02"*        },*  "roles": ,*  "platformType": * }*/// 用户信息String subject = userInfo.toString();// 示例KEY,用来解密 third_tokenString key = "FineReport2018";// 超期时间  msDate expireTime = new Date(new Date().getTime() + 6000000);//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(subject)        .compact();System.out.println(token); 密码策略同用户名        创建用户密码同用户名字段。        随机密码        随机8位强密码,包含大小写字母、数字和特殊符号。 创建部门策略部门ID长度构建部门树        根据用户信息中 `department` 的 `id` 字段长度匹配来自动构建部门树结构,示例 例如:id 0 对应中国, 02 对应北京,021 对应朝阳区,根据id长度匹配父子部门特殊根部门ID 例如:id 00 对应中国, 02 对应北京,021 对应朝阳区,这时候就需要填入 00 来标记特殊根部门         部门名称拼接构建部门树         根据用户信息中 department 的 name 字段长度分隔来自动构建部门树结构 例如:name 中国 对应中国, 中国|北京 对应北京,中国|北京|朝阳区 对应朝阳区,根据name分隔匹配父子部门,如上 `分隔符` 需要填入 `|` 用户类型说明 平台用户类型: 1 PC端 2 BI查看 (仅BI) 4 移动端  5 BI数据分析(只可创建excel和自助数据集) (仅BI) 6 BI数据处理(可创建sql/db/excel/自助数据集)(仅BI) 注:- 平台默认所有用户均为不限制用户,需要手动开启下具体类型的`限制使用用户`后,添加用户才会生效,否则还是不限制的状态- 用户类型见是有唯一限制的,例如BI查看用户(2)和BI设计用户(5/6),BI数据分析用户(5)和BI数据处理用户(6),用户类型详见帮助文档说明- 当未开启 `限制使用用户`时,FR中默认添加用户类型为 `PC端`和`移动端` BI中默认添加用户类型为 `BI数据分析用户`和 `移动端` 2.4 用户信息是否进行AES加密 即上面代码中的示例 subject 字段最终是否需要进行 aes 加密,其中`AES加密密钥`固定为 16位。示例代码如下: // 示例KEY,用来解密 third_tokenString key = "FineReport2018";// AES加密密钥,16位长度String encryptKey = "1234567890123456"; // 用户信息String subject = "zhangsan";// 超期时间 msDate expireTime = new Date(new Date().getTime() + 6000000);// AES加密用户信息KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));byte encryptByte = cipher.doFinal(subject.getBytes("utf-8"));//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(Base64.getEncoder().encodeToString(encryptByte))        .compact();System.out.println(token); 2.5 模板预览参数校验 对于挂载至OA或者其他平台的报表链接,需校验预览时报表链接参数防止权限泄露。校验请求接口说明: 请求地址:`校验地址` 选项请求类型:POSTBODY请求参数:  { userId: xxx, //当前登录用户名 key1: value1,  //其他所有模板链接携带的URL参数 key2: value2  }响应结果:  {   data: true/false //参数校验结果的返回示例  } 2.6 远程设计连接开启token校验 开启后,设计器远程连接服务器时,可通过token替换密码进行登录认证。 2.2.7 显示唤醒设计器   功能开启之后,用户登录帆软平台后在右上角消息提醒前面会新增一个`启动设计器`按钮,用于唤醒本地设计器并自动连接至远程服务器 - 64位设计器下载地址: win64位设计器下载地址 - 32位设计器下载地址: win32位设计器下载地址   注: - 目前仅windows系统唤醒本地设计器 - 客户端设计器需要OEM,非帆软官网下载的版本 3. 接口说明 3.1 跨域登录接口 请求URL: http(s)://xx.com/webroot/decision/third/auth/cross/login 使用场景:用于集成平台前台页面跨域请求,请求成功后会自动把帆软token写到浏览器cookie中,此时浏览器会处于已登录状态,访问帆软平台首页或者具体的报表页面都是已登陆的效果,不需要再额外处理; 请求方式:GET URL参数说明:third_token - jwt 方式生成的token 请求示例 $.ajax({    url: "http://localhost:8075/webroot/decision/third/auth/cross/login",    dataType: "jsonp",    data: {third_token: "xxx"},    success: function(res) {        console.log(res)    }}) 返回示例 {accessToken: fine_auth_token, url: url, status: success/fail } 3.2 获取帆软fine_auth_token 请求URL:http(s)://xx.com/webroot/decision/third/auth/login 使用场景:帆软平台部分开放接口需要携带 fine_auth_token 进行认证, 这时候就需要使用 third_token 来换取 fine_auth_token,可使用该接口,获取帆软登录状态标识 fine_auth_token 后,可用如下两种处理携带:1、把fine_auth_token添加到请求添加到URL参数中2、在请求头中添加 "Authorization":"Bearer " + fine_auth_token 请求方式:GET 参数说明:third_token - jwt 方式生成的验证token 请求示例 http://localhost:8075/webroot/decision/third/auth/login?third_token=eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NDYyMTE2NDYsInN1YiI6IntcInVzZXJuYW1lXCI6XCJ6aGFvd3UxXCIsXCJkZXBhcnRtZW50XCI6e1wibmFtZVwiOlwienp6XCIsXCJpZFwiOlwiMDIxMVwifSxcInJvbGVzXCI6WzViXVwiWzRlMWFdWzYyNjldXCJbNWRdfSJ9.yGOsC4uwrEqwtvL0p2ieZLGDsyptn28bwmoTfKJMiNM 返回示例 成功示例:{    "data": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwidGVuYW50SWQiOiJkZWZhdWx0IiwiaXNzIjoiZmFucnVhbiIsImRlc2NyaXB0aW9uIjoiMSgxKSIsImV4cCI6MTY0NjI3MjczNiwiaWF0IjoxNjQ2MjY5MTM2LCJqdGkiOiJKY3lVejUrdUhLbndqM3IySnhyTTd4OGNWeFlrSXdyUVVUNFRjV2VMaXUybGFhc0MifQ.OiXXo3oymPagnO2q4XMGvY2nIzYEae2PCSMHYJavI7E"}失败示例:{    "errorCode": "",    "errorMsg": "FR decision integration exception: The value of jwt key is null!"}    
【已下架插件文档】cpt预览表格可调整
该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。       1. 概述 1.1 版本  报表服务器版本  插件版本  11.0 V1.4 1.2 应用场景 FineReport使用过程中,通常在cpt表格生成之后,前端预览时无法调整行高、列宽以及行列的位置顺序,所以我们经常会遇到如下一些问题 1)一张明细表,结构简单,但行数、列数很多,想要直接对比分隔较远的几行或者几列,却不能像Excel那样通过复制粘贴或者隐藏行列的办法集中显示到一起; 2)设计cpt时为了美观,固定了行高、设置了符合大多数据显示长度的列宽,但是实际展示时却会有少数几条与普通该字段数据长度相差较大的数据,无法显示完全; 3)报表需求不明确,不清楚每个字段想要的行高列宽,凭自己的判断做好以后却不符合需求方要求,需反复在后台设计器修改、再在前端网页预览效果...... 1.3 功能介绍 为用户提供在前端调整表格的功能。它把表格行高、列宽、行列顺序的决定权充分发放给看报表的人,免去反复沟通修改的成本,能更好地应对频繁变更的展现需求,在上面这些场景下操作起来非常便捷。 3. 操作步骤 3.1 添加【自由调整单元格】按钮 安装好插件后,打开需要在前端调整的cpt文件,点击模板>模板web属性>数据分析设置,将以下设置:修改为为该模板单独设置,双击【自由调整单元格】,将按钮添加到工具栏中,点击【确定】,如下图: 注:目前只支持cpt文件,frm不支持 注:目前支持分页预览、填报预览、数据分析三种预览方式。 3.2 前端自由调整单元格效果预览 3.2.1 进入自由调整单元格模式 1)点击数据分析预览报表(根据上面web属性里的设置),发现在顶部工具栏出现【自由调整单元格】,如下图: 点击以后进入“调整单元格”模式,如下图: 注:此模式下,原本无色的边框会以灰色细框显示出来,原本较粗的表格边框变细。 3.2.2 调整单元格大小(行高列宽) 根据实际需要,将鼠标悬浮在需要调整的单元格的边,鼠标会变为“双向箭头”,此时按住鼠标拖动,直至调整到自己想要的高度和宽度即可。 3.2.3 调整列的顺序 根据实际需要,将鼠标悬浮在需要调整的列的最上方单元格中,鼠标会变为“十字箭头”,此时按住鼠标拖动该列,直至拖至自己想要的地方即可。 3.2.4 调整行的顺序 根据实际需要,将鼠标悬浮在需要调整的行的最左侧单元格中,鼠标会变为“十字箭头”,此时按住鼠标拖动该列,直至拖至自己想要的地方即可。 3.2.5 退出调整单元格模式 点击“退出调整单元格”即可按照已调整的效果正常预览,表格边框恢复原来粗细,原无色边框也变回无色。 4. 注意事项 1)移动端不支持。 2)目前对带图表的表格、复杂表格(如大量同时包含横向、纵向合并单元格、其他非文字内容单元格的情况)支持不完全,可能出现无法调整大小、调整位置的情况,正在持续优化。 3)导出功能暂不支持。
【已下架插件文档】OSS文件上传下载
该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。   1. 概述 1.1 版本 报表服务器版本 JAR 包 插件版本 App 版本 10.0 2019-06-13 4.2 10.0 1.2 应用场景 在业务中,经常会有上传文件保存到服务器,然后再从另外的报表中查看附件的需求。 1.3 功能描述 1)使用将文件上传到阿里云服务器上的方案,可以同时利用 通用 OSS 配置 和  OSS 文件上传下载 插件; 2)OSS 文件上传下载插件是依赖通用 OSS 配置插件的,需要先安装通用 OSS 配置插件; 3)该方案不仅在集群下能用,也可以在单机下使用将文件存储到阿里云的 OSS 上。 注1:官方仅支持阿里云 OSS (公有云),如使用私有阿里云 OSS 引起的问题,暂无法解决。 注2:上传大文件较慢,不建议通过该插件上传超过200M的文件。 注3:本插件不支持移动端使用。 注4:本插件不支持决策报表填报。 注5:如果实际场景受到以上功能限制影响,可以考虑使用 悦享版文件上传下载插件 解决,其功能和覆盖的场景更多。 2. 插件介绍 1)文件上传至 OSS  「报表填报属性」界面,「自定义提交」的提交类型中新增了「文件上传(OSS)」类型,如下图所示: 2)文件下载 「超级链接」新增一个选项「文件下载(OSS)」,可以通过设置「超级链接」,实现从 OSS 服务器端下载文件,如下图所示: 3. 示例 3.1 环境准备 使用之前需要建立一个阿里云账号,并使用其 OSS 功能,且需要购买一定的存储空间。 1)安装通用 OSS 配置插件   2)进入「数据决策系统」,点击管理系统>系统管理>常规,可以看到有「OSS 通用配置」 Tab 栏,如下图所示: 3)输入对应的信息,其中: EndPoint(地域节点):在阿里云 OSS 点击 bucket ,找到 Bucket 域名,点击进入,在概览的访问域名处即可看到。 AccessKeyId 和 AccessKeySecret :参考阿里云文档 如何获取 AccessKeyId 和 AccessKeySecret 。 注意:修改配置信息,要重启后才会生效。   3.2 报表设计 新建普通报表,给 A1 单元格添加「文件控件」,文件类型设置为「全部文件」,步骤如下图所示:   3.3 上传文件到 OSS 1)菜单栏点击「模板>报表填报属性」,添加「自定义提交」,提交类型选择「文件上传(OSS)」。Bucket 名字:填写 3.1 章节在数据决策系统中的 Bucket 名字。 目录:上传的文件存放在 OSS 的位置,比如 OSS 如图根目录是 project_bak/ 那么文件可以放在某一目录:project_bak/store/folder。 文件:填写文件的填报单元格位置,插入「公式」 A1 。 文件名:代表文件名使用的名称,填写文件名,也可以插入公式filename(A1)。 3)保存报表,点击「填报预览」,上传文件后点击「提交」,如下图所示: 3.4 下载功能 要下载 OSS 中的文件,添加一个类型为「文件下载(OSS)」的超链接,并输入对应 Bucket 名、下载目录和文件名即可,如下图所示: 注1:OSS 的下载链接限时 1 分钟内有效,超时则提示请求已过期。 注2:OSS 上传与下载时要确保阿里云 OSS 的时间与本地使用(包括工程所在服务器)的时间是一致的。
【已下架插件文档】登录集成插件帮助文档
  该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。   1. 概述 1.1 版本 报表服务器版本 JAR 包版本 插件版本 10.0、11.0     1.2 应用场景 通过JWT加密用户信息生成第三方TOKEN,用于实现1、跨域单点登录2、配置用户创建策略,认证完成后实现在帆软平台中创建用户信息3、用于换取帆软fine_auth_token(用于帆软平台接口的调用) 2. 配置说明 2.1 帆软平台地址  帆软平台的访问地址,示例:http://localhost:8075/webroot/decision,该配置用于跳转操作读取帆软平台地址 2.2 JWT秘钥值 用于 third_token 解密,需要与生成 third_token 使用的 key 一致。 2.3 认证完成创建用户 third_token 校验通过之后,开启该功能会按照如下规则在帆软平台创建用户信息。 创建远程连接同名目录:开启配置,token校验通过后,会在 reportlets 下创建同用户名的文件夹,并赋予用户该目录的远程设计目录权限 用户创建策略:           仅用户名       创建 third_token 时,subject 字段须为用户名,示例如下: // 示例KEY,用来解密 third_tokenString key = "FineReport2018";// 用户信息String subject = "zhangsan";// 超期时间 msDate expireTime = new Date(new Date().getTime() + 6000000);//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(subject)        .compact();System.out.println(token);          包含部门职位        创建 third_token 时,subject 字段须为JSON格式字符串,示例如下: JSONObject userInfo = JSONObject.create()                .put("username", "zhangsan")                .put("department", JSONObject.create().put("name", "beijing").put("id", "02"))                .put("roles", JSONArray.create().add("业扩").add("部长"))                .put("platformType", JSONArray.create().add(1).add(4));/*** 实际生成数据示例:* {*  "username": "zhangsan",*  "department": {*  "name": "beijing",*  "id": "02"*        },*  "roles": ,*  "platformType": * }*/// 用户信息String subject = userInfo.toString();// 示例KEY,用来解密 third_tokenString key = "FineReport2018";// 超期时间  msDate expireTime = new Date(new Date().getTime() + 6000000);//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(subject)        .compact();System.out.println(token);   密码策略同用户名        创建用户密码同用户名字段。        随机密码        随机8位强密码,包含大小写字母、数字和特殊符号。 创建部门策略部门ID长度构建部门树        根据用户信息中 `department` 的 `id` 字段长度匹配来自动构建部门树结构,示例 例如:id 0 对应中国, 02 对应北京,021 对应朝阳区,根据id长度匹配父子部门特殊根部门ID 例如:id 00 对应中国, 02 对应北京,021 对应朝阳区,这时候就需要填入 00 来标记特殊根部门           部门名称拼接构建部门树         根据用户信息中 department 的 name 字段长度分隔来自动构建部门树结构 例如:name 中国 对应中国, 中国|北京 对应北京,中国|北京|朝阳区 对应朝阳区,根据name分隔匹配父子部门,如上 `分隔符` 需要填入 `|`   用户类型说明 平台用户类型: 1 PC端 2 BI查看 (仅BI) 4 移动端  5 BI数据分析(只可创建excel和自助数据集) (仅BI) 6 BI数据处理(可创建sql/db/excel/自助数据集)(仅BI) 注:- 平台默认所有用户均为不限制用户,需要手动开启下具体类型的`限制使用用户`后,添加用户才会生效,否则还是不限制的状态- 用户类型见是有唯一限制的,例如BI查看用户(2)和BI设计用户(5/6),BI数据分析用户(5)和BI数据处理用户(6),用户类型详见帮助文档说明- 当未开启 `限制使用用户`时,FR中默认添加用户类型为 `PC端`和`移动端` BI中默认添加用户类型为 `BI数据分析用户`和 `移动端` 2.2.4 用户信息是否进行AES加密 即上面代码中的示例 subject 字段最终是否需要进行 aes 加密,其中`AES加密密钥`固定为 16位。示例代码如下: // 示例KEY,用来解密 third_tokenString key = "FineReport2018";// AES加密密钥,16位长度String encryptKey = "1234567890123456"; // 用户信息String subject = "zhangsan";// 超期时间 msDate expireTime = new Date(new Date().getTime() + 6000000);// AES加密用户信息KeyGenerator kgen = KeyGenerator.getInstance("AES");kgen.init(128);Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));byte encryptByte = cipher.doFinal(subject.getBytes("utf-8"));//依赖 io.jsonwebtokenString token = io.jsonwebtoken.Jwts.builder()        .setExpiration(expireTime)        .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, Base64.getEncoder().encodeToString(key.getBytes("UTF-8")))        .setSubject(Base64.getEncoder().encodeToString(encryptByte))        .compact();System.out.println(token); 2.2.5 模板预览参数校验 对于挂载至OA或者其他平台的报表链接,需校验预览时报表链接参数防止权限泄露。校验请求接口说明: 请求地址:`校验地址` 选项请求类型:POSTBODY请求参数:  { userId: xxx, //当前登录用户名 key1: value1,  //其他所有模板链接携带的URL参数 key2: value2  }响应结果:  {   data: true/false //参数校验结果的返回示例  } 2.2.6 远程设计连接开启token校验 开启后,设计器远程连接服务器时,可通过token替换密码进行登录认证。 2.2.7 显示唤醒设计器   功能开启之后,用户登录帆软平台后在右上角消息提醒前面会新增一个`启动设计器`按钮,用于唤醒本地设计器并自动连接至远程服务器 - 64位设计器下载地址: win64位设计器下载地址 - 32位设计器下载地址: win32位设计器下载地址   注: - 目前仅windows系统唤醒本地设计器 - 客户端设计器需要OEM,非帆软官网下载的版本   2.3 接口说明 2.3.1 跨域登录接口 请求URL: http(s)://xx.com/webroot/decision/third/auth/cross/login 使用场景:用于集成平台前台页面跨域请求,请求成功后会自动把帆软token写到浏览器cookie中,此时浏览器会处于已登录状态,访问帆软平台首页或者具体的报表页面都是已登陆的效果,不需要再额外处理; 请求方式:GET URL参数说明:third_token - jwt 方式生成的token 请求示例 $.ajax({    url: "http://localhost:8075/webroot/decision/third/auth/cross/login",    dataType: "jsonp",    data: {third_token: "xxx"},    success: function(res) {        console.log(res)    }}) 返回示例 {accessToken: fine_auth_token, url: url, status: success/fail }   2.3.2 获取帆软fine_auth_token 请求URL:http(s)://xx.com/webroot/decision/third/auth/login 使用场景:帆软平台部分开放接口需要携带 fine_auth_token 进行认证, 这时候就需要使用 third_token 来换取 fine_auth_token,可使用该接口,获取帆软登录状态标识 fine_auth_token 后,可用如下两种处理携带:1、把fine_auth_token添加到请求添加到URL参数中2、在请求头中添加 "Authorization":"Bearer " + fine_auth_token 请求方式:GET 参数说明:third_token - jwt 方式生成的验证token 请求示例 http://localhost:8075/webroot/decision/third/auth/login?third_token=eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NDYyMTE2NDYsInN1YiI6IntcInVzZXJuYW1lXCI6XCJ6aGFvd3UxXCIsXCJkZXBhcnRtZW50XCI6e1wibmFtZVwiOlwienp6XCIsXCJpZFwiOlwiMDIxMVwifSxcInJvbGVzXCI6WzViXVwiWzRlMWFdWzYyNjldXCJbNWRdfSJ9.yGOsC4uwrEqwtvL0p2ieZLGDsyptn28bwmoTfKJMiNM 返回示例 成功示例:{    "data": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwidGVuYW50SWQiOiJkZWZhdWx0IiwiaXNzIjoiZmFucnVhbiIsImRlc2NyaXB0aW9uIjoiMSgxKSIsImV4cCI6MTY0NjI3MjczNiwiaWF0IjoxNjQ2MjY5MTM2LCJqdGkiOiJKY3lVejUrdUhLbndqM3IySnhyTTd4OGNWeFlrSXdyUVVUNFRjV2VMaXUybGFhc0MifQ.OiXXo3oymPagnO2q4XMGvY2nIzYEae2PCSMHYJavI7E"}失败示例:{    "errorCode": "",    "errorMsg": "FR decision integration exception: The value of jwt key is null!"}  
文档满意度调研反馈一期
            文档满意度调研反馈一期     文档满意度调研问卷 哈喽,亲爱的小伙伴们~ 日前我们发布了文档满意度调研问卷:https://sk6xa7bj2w.jiandaoyun.com/f/6232eb64cf839c000785a2fc 很多番薯给出了非常肯定的回答,也接收到了大家的相关需求和渴望。 今天特地整理了本期FAQ,希望能解决大家的部分问题~   01 Q 数据分析理论知识 A: 常用数据分析模型与方法:https://help.fanruan.com/finebi/doc-view-1162.html 对外用户分析:RFM 分析、ABC分析、波士顿矩阵图、转化分析、购物篮分析-关联规则、留存分析、用户画像分析、月复购分析、AARRR 用户运营分析、用户流入流出分析、用户生命状态分析、用户粘性分析 内部营运分析:需求分析方法-KANO模型、库存周转分析、杜邦分析、盈亏平衡分析 02 Q 如何获取模板素材 A:  为大家推荐两个渠道: 1)模板:帆软市场(https://market.fanruan.com/template) 介绍:不同场景!不同终端!不同风格!你想要的模板我都有! 2)素材:FVD素材库(https://fvd.fanruan.com/) 介绍:可视化素材一键可达!不断更新!模板美化不求人! 注:请使用帆软通行证登录。 03 Q 最好能有更多业务方面的模板,方便报表实施时的思路以及解决一些技术问题。 A:  基于实际项目案例,我们为大家制作了人事、销售、财务、生产、采购等方面的Demo,并记录下制作过程中的思路和注意点。 详情请参见:业务场景案例:https://help.fanruan.com/dvg/doc-view-5.html   04 Q 有没有单元格统一的格式呢 A: FineReport11.0新增了模板主题管理,为大家设计好了风格统一的单元格样式。 详情请参见:模板主题管理:https://help.fanruan.com/finereport/doc-view-4273.html   05 Q 财务报表 A: 财务管理方案:https://help.fanruan.com/dvg/doc-view-121.html   06 Q 希望增加用户模板上传渠道,丰富模板题材库 A:  目前帆软市场和Demo平台暂时无法直接上传模板,但用户可以通过以下三个渠道发布自己的模板。 1)社区论坛(https://bbs.fanruan.com/topic/c/113-10-1.html) 用户可自行新建帖子,并上传模板。 审核机制:只要满足社区基本规范,即可发布帖子。 面向用户:所有社区用户 2)可视化指南(https://help.fanruan.com/dvg) 用户可点击右上角,新建文档,上传模板和方法论。 审核机制:上传的模板必须有可复用性,需要写清自己的制作思路。审核通过后会自动发放奖励到您的账户 面向用户:实际项目用户 3)FVD素材库(https://fvd.fanruan.com/) 用户可点击右上角,上传项目/素材/方法论(分类说明请戳这里) 审核机制:上传的模板视觉要求较高,由视觉专业同学进行审核,暂无奖励。 面向用户:视觉涉猎用户   07 Q 希望能把移动端Demo或者PC端Demo在一个页面上汇集一下,方便下载。 A: 下载方法 1)PC端Demo:用户访问http://demo.finereport.com/,查看每一张模板,在模板显示界面有一个「点击下载模板」按钮,点击即可跳转到对应模板的下载页面 2)移动端Demo:移动端 Demo下载:https://help.fanruan.com/finereport/doc-view-2931.html   08 Q 数据看板大屏布局规划 A:  给大家推荐以下一些布局: 驾驶舱布局:https://help.fanruan.com/dvg/doc-view-24.html 多级分析页面布局:https://help.fanruan.com/dvg/doc-view-12.html BI分析报告布局:https://help.fanruan.com/dvg/doc-view-44.html 移动端布局:https://help.fanruan.com/dvg/doc-view-9.html   09 Q 可视化美化优化 A: 为大家推荐以下几种方法: FVD素材库:https://fvd.fanruan.com/ 颜色搭配一致性原则:https://help.fanruan.com/dvg/doc-view-46.html 色彩与配色基础:https://help.fanruan.com/dvg/doc-view-8.html 几套预定义样式推荐:https://help.fanruan.com/dvg/doc-view-51.html   10 Q 希望能提供一个大屏模板下载专栏,提供一些优质大屏下载接口 A:您可登录大屏Demo(http://finemaxdemo.fanruan.com/),查看每一张模板。 在模板显示界面有一个「点击下载模板」按钮,点击即可跳转到对应模板的下载页面。     11 Q 手机上查看文档,可以增加一个手机上查看的链接或者APP的说明。休息前想看会文档,手机上能看到finereport文档,其它模块查不到。 A:有两种方法 1)微信查看: 关注公众号「帆软」,在下拉框「了解帆软」,选择对应的产品,即可查看对应的帮助文档。 2)APP查看: 下载帆软社区App(https://bbs.fanruan.com/plugin.php?id=app_download),在APP首页即可查看所有帮助文档。     12 Q 如何进行插件的开发? A:插件开发教程:https://wiki.fanruan.com/pages/viewpage.action?pageId=12746905 10.0接口:https://wiki.fanruan.com/pages/viewpage.action?pageId=20021384 11.0接口:https://help.fanruan.com/finereport/doc-view-4327.html   — END — 帮助文档 https://help.fanruan.com/ 文档共创 文档共创规则        
获取三维城市所需geojson文件的操作步骤
写在前面 1)该方案由番薯提供,帆软技术支持不负责方案的维护和使用问题解答。 2)网址如不可用,请移步评论区查看!!! 1. geojson简介 1.1 geojson的定义 geojson是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法(JavaScript Object Notation, 简称JSON,FineReport内置的中国-area.json也是其中一种)的地理空间信息数据交换格式。 geojson对象可以表示几何、特征或者特征集合。 geojson支持点、线、面、多点、多线、多面等集合类型。 1.2 三维城市中的geojson 在「FVS大屏编辑模式」的「三维城市」组件中,产品自动识别的geojson属性包括: 类型 属性 示例 命名建筑(主建筑) building&&name 既有building属性又有name属性,则在三维城市中会出现该建筑的3D模型,且建筑外立面颜色闪耀,代表建筑灯光 未命名建筑(其他建筑) building 没有building属性,则在三维城市中不会出现该建筑的3D模型 只有building属性没有name属性,则在三维城市中,该建筑的名称不能被识别到,被纳入其他建筑中,色彩也相较于有名称的建筑更加暗淡 命名道路(主道路) road&&name 既有road属性又有name属性,则在三维城市中显示该道路,且道路自带流光效果,表示人流车流 未命名道路(其他道路) road 没有road属性,则在三维城市中不会显示该道路 只有road属性没有name属性,则在三维城市中,该街道的名称不能被识别到,被归入其它街道,街道色泽也更暗淡些 草地 grass 水系 water 2. 获取基础的geojson 1)进入「https://overpass-turbo.eu/」网站,在搜索框内模糊查询需要圈选的城市区域,如「wuxidong」(无锡东,只支持英文) 2)点击「manually select bbox」按钮,调整方框圈选城市区域范围 3)修改浏览器「setting」中的UI language为「en」,否则后续步骤可能无法生效。 4)修改左侧代码为: ; nwr({{bbox}}); out; 5)点击「run」按钮,获取该区域的geojson数据点。 6)点击「Export」按钮,点击「download/copy as GeoJSON」。 3. 调整获取的geojson 本章将教大家如何增删改建筑/道路模型。 1)获取某块原geojson中没有的建筑: 进入「https://geojson.io」,模糊搜索「wuxi」(无锡),这个网站搜索不会太精细,需要手动放大、定位到需要的位置。 2)对需要的区域进行选择,可圈选道路、不规则区域、矩形区域,如下图所示: 3)对圈选出来的建筑按照三维城市可识别的属性补充建筑模型的properties: 其中building是必要包括的,name不包括则导入三维城市时被识别为其他建筑; height按照高度的比例在三维城市中展示,没有height则按照默认高度生成建筑,如果想让建筑在大屏上更突出,最好设置一个稍大的高度,100-300之间都比较合理。 4)将这段建筑的代码复制到以获取的基础geojson中: 用任一文本编辑器打开上一个基础文件  map.geojson,可以在开头、中间或末尾的任何对象后新增上一步骤中复制的代码。 如上图所示,在蓝框前后添加新增建筑的代码都是可以的,三维城市的识别与顺序无关,只是靠后的建筑名称在三维城市的模型列表靠后。 复制粘贴的时候注意  “,”  和  “}”  不要错位(“type”前一个"{"到最后一个选点的经纬度后的 "] ] ] } },"组成一个建筑对象),如果用能对准的编辑器处理会方便很多。 5)道路、草地等同理,在合并好代码后导入三维城市即可生产建筑。 编辑于 2021-10-19 10:22 编辑于 2021-10-25 15:10 4. 建筑为空的 geojson 如果用户希望完全使用自定义模型,不想创建场景,此时需要导入一个空的geojson 这个geojson中需要添加一个 Polygon 并作为第一个 feature,添加特殊属性: "calder:bbox": true 此时场景范围(bbox)以此 Polygon 为准 示例: { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "calder:bbox": true }, "geometry": { "type": "Polygon", "coordinates": [ ,,,,] ] } } ] }   编辑于 2021-10-25 15:46
外置数据库回迁内置数据库
1. 概述 1.1 问题描述 安装部署FineReport 报表工程时,会创建数据库 FineDB。FineDB 用来存储 FineReport 自带的报表管理系统(数据决策平台)信息,比如平台用户信息、权限设定信息等。 初次安装部署工程时,可以选择 FineDB 为内置数据库或外接数据库,详细内容可以参考:决策系统简介 若用户选择了 FineDB 为外接数据库, 实际使用中,当 FineDB 外接数据库无法连接或者需要进行工程迁移时,就需要将 FineDB 回迁,从外接数据库变换成内置数据库。   1.2 实现思路 在管理系统中手动备份平台配置 FineDB 文件,用备份的文件替换原有文件,删除外接数据库配置「db.properties」文件后即可还原为内置数据库。 2. 操作步骤 2.1 备份平台配置 1)登录管理员账号,进入「管理系统>智能运维>备份还原」,点击「平台配置」,可以看到备份界面,如下图所示: 注:若备份界面无内容显示,说明 FineDB 为内置数据库,在「管理系统」>「常规」界面,「外接数据库」位置可以查看是否配置外接数据库。 2)在「管理系统>智能运维>备份还原>平台配置」界面,点击「手动备份」后,弹出「备份设置」窗口,点击「确定」,若需要修改名称可以在「名称」处修改,如下图所示: 2.2 替换FineDB库 1)进入报表工程目录%FR_HOME%\webapps\webroot\backup\config\manual,找到刚才备份的文件,如下图所示:   2)点击备份文件,解压备份文件中的「config」文件夹,得到「finedb」数据库文件,如下图所示: 3)复制「finedb」数据库文件,替换报表工程目录%FR_HOME%\webapps\webroot\WEB-INF\embed下的「finedb」文件,如下图所示: 2.3 删除配置文件 进入%FR_HOME%\webapps\webroot\WEB-INF\config 目录,删除「db.properties」文件。该配置文件保存的是外接数据库的配置,删除即还原为内置数据库,如下图所示: 2.4 重启报表工程 重启报表工程后,用管理员账号登录,在「管理系统」>「常规」界面,「外接数据库」位置可以看到已显示「待配置」,说明 FineDB 已还原为内置数据库,如下图所示: 3. 注意事项 3.1 外置数据库迁移到 Oracle 数据库 本文介绍内容为外置数据库迁移到内置 HSQL 数据库,如果用户需要将外置数据库迁移到 Oracle 数据库,需要注意本节所述内容。 有两条主键 ID ,区别为结尾是否带空格。例如「config」和「config 」,Oracle 数据库会认为是不同的数据,HSQL 数据库认为是相同的数据。FineDB 数据库通常只有 fine_conf_entity 会有结尾带空格的情况。 在备份时需要做如下处理:将结尾为空格的数据结尾处加上'__BL__',在还原时再去掉。在这种情况下,若用本文的方法,将备份文件拷贝至 embed 文件夹,再迁移出去后,需要执行update fine_conf_entity set id = replace(id, '__BL__', '')做脏数据处理。
【Demo升级即将启动】先收集一波吐槽,也欢迎大家分享
2020年度帆软产品Demo升级即将开始,我们将通过问卷形式收集您的相关意见和建议,希望通过此次调研可以呈现出大家心目中最理想的Demo。 参与问卷填写即可获得1~2F币奖励,优质问卷还将获得2~10F币额外奖励~ 如上传可复用模板,一经选中,可获得36~88F币额外奖励哦~ 所有奖励将在问卷收集结束后,通过社区后台统一发放~请在提交时填写真实的联系方式,便于发放奖品哦~ 问卷链接:https://u5tqxzizx9.jiandaoyun.com/f/5f19402a5aa24a0006aac417另:如果有问卷未涉及,但需要Demo改进的方面,请直接在帖子下方评论,谢谢大家~~
个人成就
内容被浏览111,297
加入社区5年263天
返回顶部