开源OA
xuhuisheng / lemon Goto Github PK
View Code? Open in Web Editor NEW开源OA
License: Apache License 2.0
开源OA
License: Apache License 2.0
开源OA
支持流程开始时,手工指定所有任务的负责人。
BusinessCalendar现在是硬编码在xml里的。
应该支持数据库管理
节假日管理
每年的节假日导入
发起页面加载不相应的文件
整个页面只显示
title
body
footer
几个英文单词
Boco-PC/192.168.1.103
Header....
Cookie=JSESSIONID=2vcorv04f9721c0mdtl3422m0
Host=localhost:8080
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Content-Length=22
Content-Type=application/x-www-form-urlencoded
Accept-Language=zh-CN,zh;q=0.8
Referer=http://localhost:8080/default/auth/user-connector.do
User-Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Connection=keep-alive
Cache-Control=max-age=0
Accept-Encoding=gzip,deflate,sdch
Origin=http://localhost:8080
Attribute....
javax.servlet.forward.request_uri=/default/auth/user-connector.do
scopePrefix=/default
javax.servlet.forward.context_path=
javax.servlet.error.status_code=500
javax.servlet.error.servlet_name=default
javax.servlet.error.exception_type=class org.springframework.jdbc.BadSqlGrammarException
__spring_security_session_mgmt_filter_applied=true
struts.valueStack=com.opensymphony.xwork2.ognl.OgnlValueStack@16b093f
org.springframework.web.context.request.async.WebAsyncManager.WEB_ASYNC_MANAGER=org.springframework.web.context.request.async.WebAsyncManager@2c3910
javax.servlet.forward.servlet_path=/default/auth/user-connector.do
javax.servlet.error.message=Server Error
org.eclipse.jetty.server.error_page=/common/500.jsp
__cleanup_recursion_counter=0
struts.actionMapping=ActionMapping{name='user-connector', namespace='/auth', method='null', extension='do', params=null, result=null}
__spring_security_filterSecurityInterceptor_filterApplied=true
javax.servlet.error.exception=org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [select id as id,username as username,status as statusdisplay_name as display_name,email as email,mobile as mobile,user_repo_id as user_repo_ref from USER_BASE limit 0,10]; nested exception is java.sql.SQLSyntaxErrorException: unexpected token: AS
javax.servlet.error.request_uri=/default/auth/user-connector.do
Parameter....
filter_LIKES_username=[]
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [select id as id,username as username,status as statusdisplay_name as display_name,email as email,mobile as mobile,user_repo_id as user_repo_ref from USER_BASE limit 0,10]; nested exception is java.sql.SQLSyntaxErrorException: unexpected token: AS
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:95)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:693)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:725)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:735)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:785)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:890)
at com.mossle.bridge.user.DatabaseUserConnector.pagedQuery(DatabaseUserConnector.java:111)
at com.mossle.bridge.user.UserConnectorWrapper.pagedQuery(UserConnectorWrapper.java:78)
at com.mossle.auth.web.auth.UserConnectorAction.list(UserConnectorAction.java:75)
at com.mossle.auth.web.auth.UserConnectorAction.execute(UserConnectorAction.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MessageStoreInterceptor.intercept(MessageStoreInterceptor.java:197)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:73)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:149)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:181)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at com.mossle.security.client.AutoLoginFilter.doFilter(AutoLoginFilter.java:38)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at com.mossle.bridge.scope.PrefixScopeFilter.doWithScope(PrefixScopeFilter.java:97)
at com.mossle.bridge.scope.PrefixScopeFilter.doFilter(PrefixScopeFilter.java:82)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at org.javasimon.javaee.SimonServletFilter.doFilterWithMonitoring(SimonServletFilter.java:219)
at org.javasimon.javaee.SimonServletFilter.doFilter(SimonServletFilter.java:209)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at com.mossle.core.i18n.AcceptLanguageHeaderFilter.doFilter(AcceptLanguageHeaderFilter.java:25)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
at com.mossle.core.servlet.ProxyFilter.doFilter(ProxyFilter.java:68)
at com.mossle.core.servlet.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:60)
at com.mossle.core.servlet.CompositeFilter.doFilter(CompositeFilter.java:37)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1476)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.sql.SQLSyntaxErrorException: unexpected token: AS
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313)
at org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1559)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:636)
... 145 more
Caused by: org.hsqldb.HsqlException: unexpected token: AS
at org.hsqldb.error.Error.parseError(Unknown Source)
at org.hsqldb.ParserBase.unexpectedToken(Unknown Source)
at org.hsqldb.ParserDQL.XreadSelect(Unknown Source)
at org.hsqldb.ParserDQL.XreadQuerySpecification(Unknown Source)
at org.hsqldb.ParserDQL.XreadSimpleTable(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryPrimary(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryTerm(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryExpressionBody(Unknown Source)
at org.hsqldb.ParserDQL.XreadQueryExpression(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 151 more
先实现任务到达通知
activiti-demo里有我参与的流程,Lemon OA里不知道为啥,把这个功能丢掉了。
Mr. Xu
新年好!今天仔细看了看Lemon项目,对徐先生的钦佩之情犹然而生,在如此短的空闲时间内,构建一个模块基本完整的OA系统,想必花了许多功夫和精力。
本人是OA方面的新手,想请教对于新建的流程,怎样设计基于XForm的新表单,我看到Lemon的表单是保存在数据库的form_template表内,但却不知道是在那个模块操作的?
而且数据库中的表单模板是以JSON格式保存的,请问这是用什么程序生产的?
eclipse和idea下,native2asc-plugin不起作用,要想个办法,让国际化文件能在ide下也能被正常处理
设置后,数据库没数据。
设置了以后,也没办法自动委托
1.因为业务的重叠,避免用户重复处理都属于自己负责的环节,一次审批,自动完成后续需要自己同意的任务
2.为了抽象通用流程,把多种业务放在一个流程里,要根据发起人的不同跳过一些环节。
文件箱或者叫收文。
学习的资料发给大领导,大领导转发中领导,中领导转发自己手下,最后可能反向回来,也可能到手下就终止
因为表单数据json格式有问题,导致jackson解析失败。
通用权限所有人都可以看到
部门级权限,只有本部门的才可以看到。
避免所有人看到太多自己用不到的流程
包含:执行人,候选人,候选组,会签参与人。等。
重新打开已经结束的流程实例,还要与之前的业务关联到一起。然后重走流程。
如果一个流程定义已经发布了,提供一种方法,可以修改xml,并清空cache,重新发布。
选择协办,任务发给另一个人,与代理不同的是,协办人办理完成后,任务返回原负责人。
把特别大的依赖jar去掉。
1.0.0只实现了撤销已办和回退到前一个节点
回退到前一个节点,还没详细测试。
驳回时,导致一个节点走了多次,就只显示成绿色,不显示红色了。
支持配置会签的参与人
会签的百分比
串行或并行
显示当前任务的上一个环节,环节处理人
下一个环节,环节处理人
1.撤销
撤销自己的已办任务
2.退回
回退到前一个环节
回退到发起人
回退到任意节点
3.分支的回退
4.会签的回退
5.子流程的回退
使用fullcalendar的方式实现日程管理,可以通过日历的形式管理自己的日程。
支持字段的格式校验
提供mysql脚本
任务列表中显示任务的原始负责人
比如显示xx列表,只读
比如,可以根据角色配置某一类人
功能更强大的,可以配置分管领导,某个人分管不同的部门。
需求描述:
modeler的表单属性都定义在stencilset.json中,在文件中搜索usertaskassignment,可以找到用户分配的配置。
属性的配置为complex,在oryx.debug.js中注册了,如果遇到complex就会弹出一个window,在里边再进行配置。
需要实现的功能是:
1.定义新的type,比如UserPicker
2.在oryx.debug.js中判断type为UserPicker时,要弹出用户选择控件,处理代码位置大概在21431行,(可以搜索case ORYX.CONFIG.TYPE_COMPLEX:)
3.弹出控件后,通过ajax获取后台数据,需要支持选择用户和手工输入expression两种方式。
4.要根据对应行选择的类型来弹出对应的用户选择框,如果类型为candidateGroups就要限制用户只能选择group,如果类型为assignee或candidateUsers限制只能选择user。
5.最后选择用户之后,怎么回写到json里,还没有确认如何实现。
先把modeler整合到Lemon OA里。
最好能实现选择人员和组织结构的功能。
需要添加一个action处理modeler的关闭动作
回退之后报错,说taskdefinition不存在
如果完成任务,再点击浏览器的后台,再完成任务,会报500,应该提示任务不存在,或者任务已完成
比如支持发起的时间,发起人,发起的流程
现在发文流程里的选人组件,不能通过界面设计,是写死的。
下一步要让设计器也支持选人组件。
为移动端开放用于审批的接口
1.表单的数据
2.表弟的布局
3.按钮
任务创建,认领,放回,完成,删除,分配,代理
发布了一个新流程定义,把现有运行在老流程定义上的流程实例迁移到新流程定义上。
1.环节没变化的情况
2.环节增加的情况
3.环节减少的情况
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.