Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kecak workflow development #79

Open
wants to merge 94 commits into
base: 7.0-SNAPSHOT
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
caa6918
kecak: upgrade to java 8
aristosh Nov 1, 2022
63bfb01
wip: data json controller
aristosh Nov 14, 2022
359ff6d
wip: data json controller
aristosh Nov 14, 2022
e3840ff
wip : add bearer auth in api
aristosh Nov 15, 2022
50f8082
wip : add bearer auth in api
aristosh Nov 15, 2022
ddd94f4
wip: organization-dependent
aristosh Nov 16, 2022
f84541a
wip: organization dependent
aristosh Nov 16, 2022
1f6b238
wip: DataList sort as
aristosh Nov 17, 2022
e9494a4
styling green to blue
finakinnara Nov 17, 2022
77146e7
upgrade servlet
aristosh Nov 23, 2022
ed4800c
change color theme
finakinnara Nov 25, 2022
70ae8b2
Implementation of soft delete
aristosh Nov 27, 2022
f16b2d3
wip : scheduler-plugin
aristosh Dec 8, 2022
469764f
id-generator-field : add options for latest or published app definition
aristosh Dec 8, 2022
e4b29bc
kecak-workflow-development-form-hash-variable: support http request p…
aristosh Dec 8, 2022
99d7bdc
implements participant-mapping-report-to
aristosh Dec 9, 2022
a81567f
incoming-email: incoming email settings
aristosh Dec 17, 2022
58873c8
incoming-email : finalize
aristosh Dec 19, 2022
1e3b915
use newer Try methods
aristosh Dec 22, 2022
3ec272f
transfer-assignment : fix pviewer.jsp, implements assignmentTransfer …
aristosh Jan 9, 2023
fdf0ba9
development : pull from master
aristosh Jan 9, 2023
62d7d53
Merge branch 'kecak-workflow-development-id-generator-field' into kec…
aristosh Jan 9, 2023
56911ba
Merge branch 'kecak-workflow-development-form-hash-variable' into kec…
aristosh Jan 9, 2023
74270f5
Merge branch 'kecak-workflow-development-incoming-email' into kecak-w…
aristosh Jan 9, 2023
ef47b70
Merge branch 'kecak-workflow-development-report-to' into kecak-workfl…
aristosh Jan 9, 2023
a1c8ee4
ui : get latest codes
aristosh Jan 9, 2023
ec01049
Merge branch 'kecak-workflow-development-transfer-assignment' into ke…
aristosh Jan 9, 2023
e9049c6
ignore-form-validation
aristosh Jan 12, 2023
eadd0fb
style changes
finakinnara Jan 17, 2023
4b130de
remove kecak bootstrap theme
aristosh Jan 18, 2023
70f9593
icon color
finakinnara Jan 19, 2023
6b3e77f
change footer, add build number
finakinnara Jan 20, 2023
e4438b7
select2 : implement select2 as selectbox
aristosh Jan 20, 2023
af1a4c2
ui : fast-forward
aristosh Jan 20, 2023
88b79d8
select2: optimize codes
aristosh Jan 20, 2023
0e46132
select2: optimize codes
aristosh Jan 20, 2023
d0d5e28
revert 70f959371be00f0ce084194b408407a77d57296e
aristosh Jan 20, 2023
422581d
ui : enabling dark mode in progressive theme
aristosh Jan 20, 2023
508c41a
select2 : add bottom-margin
aristosh Jan 22, 2023
2eb1bad
color theme
finakinnara Jan 24, 2023
62f57c0
enhance SetupManager
aristosh Jan 24, 2023
c8f2962
enhance SetupManager
aristosh Jan 24, 2023
dd09ef6
fix color theme
finakinnara Jan 24, 2023
0486467
add Mobile permission
aristosh Jan 24, 2023
fba673a
Merge branch 'kecak-workflow-development-ui' of https://github.com/ki…
finakinnara Jan 24, 2023
6165aba
fix some color theme progresive
finakinnara Jan 25, 2023
2faef26
fix color progressive
finakinnara Jan 25, 2023
d7cfdc6
fix selecbox.ftl
boolank Jan 26, 2023
eb0e8c6
universal theme java
finakinnara Jan 26, 2023
cf0bad9
Fix FormUtil.getElementPropertyOptionsMap
aristosh Jan 26, 2023
8c453b2
Merge tag '7.0.36' into kecak-workflow-development
aristosh Jan 27, 2023
7e397b6
ui-normalize
aristosh Jan 27, 2023
19596ac
merge with kecak-workflow-development-ui-normalize
aristosh Jan 27, 2023
0348bb2
merge with kecak-workflow-development-ui-normalize
aristosh Jan 27, 2023
526258e
merge with kecak-workflow-development-ui-normalize
aristosh Jan 27, 2023
e0e1e96
merge with kecak-workflow-development-ui-normalize
aristosh Jan 27, 2023
5a1b4ee
Merge branch 'kecak-workflow-development' of https://github.com/kinna…
boolank Jan 27, 2023
75fc0e3
merge with kecak-workflow-development-ui-normalize
aristosh Jan 27, 2023
c97b3c0
add style in selectbox.ftl
boolank Jan 27, 2023
19b96cc
Merge branch 'kecak-workflow-development' of github.com:kinnara-digit…
boolank Jan 27, 2023
6ae9535
fix config.properties
aristosh Jan 27, 2023
ff6d287
fix versioning
aristosh Jan 27, 2023
9b047e1
remove log
aristosh Jan 27, 2023
387f839
remove org.kecak.apps.scheduler from config.properties
aristosh Jan 27, 2023
0cf84c9
fix selectbox margin-bottom in Progressive Theme
aristosh Jan 27, 2023
3c3ed45
v3-development : fix footer error, fix selectbox
aristosh Jan 31, 2023
8323afc
select2 : fix selectbox API
aristosh Jan 31, 2023
ccc59ea
select2 : fix selectbox API
aristosh Jan 31, 2023
767a3db
select2 : create select2.kecak.js
aristosh Feb 2, 2023
5c3718d
selectbox-encryption : implement encryption in webservice and store data
aristosh Feb 3, 2023
f5d8aa2
sign in icon
finakinnara Feb 6, 2023
149f4a3
Merge branch 'kecak-workflow-development' of https://github.com/kinna…
finakinnara Feb 6, 2023
8ed713a
select2 : fix select2 event handling
aristosh Feb 6, 2023
14f3439
Merge branch 'kecak-workflow-development-selectbox-encryption' into k…
aristosh Feb 6, 2023
d6dacb6
change logo
finakinnara Mar 2, 2023
93bfc55
update css for logo
finakinnara Mar 2, 2023
f98037e
update css for logo
finakinnara Mar 2, 2023
96e525e
add bugs datalist permission in builder
aristosh Mar 6, 2023
e3417af
Merge branch 'kecak-workflow-development' of github.com:kinnara-digit…
aristosh Mar 6, 2023
c003cfc
remove atomicos logs
aristosh Mar 7, 2023
4ecf942
kecak-workflow-development : enhance multipart file handling
aristosh Apr 4, 2023
900a0dc
restructure audit trail in DataJsonController
aristosh Apr 19, 2023
91be994
set url to kecak.org
aristosh Apr 20, 2023
b68a175
kecak-workflow-development : set setup DB hosts and DB name
aristosh Apr 20, 2023
61e17dd
kecak-workflow-development : change background
aristosh Apr 20, 2023
4640336
kecak-workflow-development : plugin web socket, plugin url lock
aristosh Apr 25, 2023
d66b174
kecak-workflow-development : fix bugs when locking form builder
aristosh Apr 27, 2023
fbdb55c
kecak-workflow-development
aristosh Apr 27, 2023
473849d
kecak-workflow-development : add sessionId in Web Socket Plugins
aristosh Apr 27, 2023
395f546
restructure web socket url
aristosh Apr 27, 2023
590050f
kecak-workflow-development : add app definition in websocket plugin
aristosh Apr 28, 2023
fb3a29f
kecak-workflow-development : remove marketplace from app center
aristosh Apr 28, 2023
7b2181a
kecak-workflow-development : websocket refactor methods parameters
aristosh Apr 28, 2023
d247b1e
Update README.md
aristosh Apr 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -217,4 +217,9 @@ nbdist/
## Joget
#################

wflow-consoleweb/src/main/webapp/wro/
wflow-consoleweb/src/main/webapp/wro/


## NPM
*/node_modules/
*/package-lock.json
56 changes: 2 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,3 @@
# Joget
# Kecak

**Joget** is a next generation **open source no-code / low-code application platform** for faster, simpler digital transformation (DX).

Joget combines the best of **rapid application development**, **business process automation** and **workflow management** in a simple, flexible and open platform. Business and technical teams can collaborate to rapidly build full-fledged enterprise applications visually, anywhere, anytime.

- Web-based visual approach empowers non-coders to build and maintain apps anytime, anywhere
- Reduces time to market, from months to weeks or days
- Apps built are mobile ready, cloud ready
- APIs for integration and plugin architecture for extensibility
- "App Store" for enterprise apps – Joget Marketplace


## Licensing

- Joget Community Edition (CE) is licensed under the [GNU General Public License version 3](https://opensource.org/licenses/gpl-3.0).
- Joget Professional Edition (PE), Enterprise Edition (EE) and Large Enterprise Edition (LEE) are licensed under a [commercial EULA](https://www.joget.org/product/enterprise-eula).


## Getting Started

One of the key principles of the Joget platform is its flexibility. Many deployments options are available:
On-Premise, On-Demand Cloud, Docker, Kubernetes, Cloud Foundry, Certified OpenShift Operator, Red Hat Marketplace, Google Workspace Marketplace, AWS Marketplace, Azure Marketplace, Google Cloud Marketplace.

- [Get Started with Joget](https://www.joget.org/get-started)


## Resources

- [Community Q&A](https://answers.joget.org) - Ask questions, get answers, and help others.
- [Knowledge Base](https://community.joget.org) - User and developer reference, samples and other documentation.
- [Video Tutorials](https://www.joget.org/tutorials) - Quick overview and build your first app.
- [Joget Academy](https://academy.joget.org) - Self-paced online learning and certification.
- [Joget Marketplace](https://marketplace.joget.org) - Download ready made apps, plugins, templates and more.
- [Language Translations](https://translate.joget.org) - Translations for more than 20 languages.
- [Events](https://www.joget.com/events) - Upcoming and past Joget events & webinars.
- [Press](https://www.joget.com/press) - Joget press releases.
- [Reviews](https://www.joget.com/reviews) - Joget reviews and customer testimonials.

Follow us for the latest news and updates

- [Twitter](https://www.twitter.com/jogetworkflow)
- [LinkedIn](https://www.linkedin.com/company/joget)
- [Facebook](https://www.facebook.com/jogetworkflow)
- [YouTube](https://www.youtube.com/jogetworkflow)


## Building from Source

To build from source, please refer to [Build Source Code](https://dev.joget.org/community/display/DX7/Joget+Open+Source).


## Contributing

Joget is an open source project and if you would like to contribute, please refer to [How to Contribute](https://dev.joget.org/community/display/DX7/How-to+Contribute).
Forked from Joget Community Edition
10 changes: 5 additions & 5 deletions wflow-app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.joget</groupId>
<artifactId>wflow-app</artifactId>
<version>7.0.36</version>
<version>7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>wflow-app</name>
<url>http://www.joget.org</url>
<url>http://kecak.org</url>
<scm>
<connection>scm:git:ssh://git@repo.joget.org:2224/joget/jw-community.git</connection>
<developerConnection>scm:git:ssh://git@repo.joget.org:2224/joget/jw-community.git</developerConnection>
<url>ssh://git@repo.joget.org:2224/joget/jw-community.git</url>
<connection>scm:git:ssh://git@github.com:kinnara-digital-studio/kecak-workflow-v3.git</connection>
<developerConnection>scm:git:ssh://git@github.com:kinnara-digital-studio/kecak-workflow-v3.git</developerConnection>
<url>ssh://git@github.com:kinnara-digital-studio/kecak-workflow-v3.git</url>
<tag>7.0.36</tag>
</scm>
<modules>
Expand Down
36 changes: 29 additions & 7 deletions wflow-commons/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
<groupId>org.joget</groupId>
<artifactId>wflow-commons</artifactId>
<packaging>jar</packaging>
<version>7.0.36</version>
<version>7.0-SNAPSHOT</version>
<name>wflow-commons</name>
<url>http://www.joget.org</url>
<url>http://kecak.org</url>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
Expand Down Expand Up @@ -186,7 +186,7 @@
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -265,7 +265,7 @@
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.3</version>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
Expand Down Expand Up @@ -349,13 +349,35 @@
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jta</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20080701</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<distributionManagement>
<repository>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ protected List findByExample(String entityName, Object object) {

protected Collection find(final String entityName, final String condition, final Object[] params, final String sort, final Boolean desc, final Integer start, final Integer rows) {
Session session = findSession();
String query = "SELECT e FROM " + entityName + " e " + condition;
String query = "SELECT e FROM " + entityName + " e " + (condition == null ? "" : condition);

if (sort != null && !sort.equals("")) {
String filteredSort = filterSpace(sort);
Expand Down Expand Up @@ -126,6 +126,11 @@ protected String filterSpace(String str) {
}
}
return str;
}
}

public List find(String entityName){
Session session = findSession();
return session.createQuery( "FROM " + entityName).list();
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,61 @@
import java.util.Map;
import java.util.Properties;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbcp.managed.BasicManagedDataSource;
import org.apache.tomcat.jdbc.pool.XADataSource;

public class DynamicDataSource extends XADataSource {
import javax.sql.DataSource;

public class DynamicDataSource extends BasicManagedDataSource {

public static final String URL = "Url";

public static final String USER = "User";
public static final String PASSWORD = "Password";
public static final String DRIVER = "Driver";
private String datasourceName;

@Override
public Connection getConnection() throws SQLException {
protected synchronized DataSource createDataSource() throws SQLException {

Properties properties = DynamicDataSourceManager.getProperties();
String tempDriver = properties.getProperty(getDatasourceName() + DRIVER);
String tempUrl = properties.getProperty(getDatasourceName() + URL);
String tempUser = properties.getProperty(getDatasourceName() + USER);
String tempPassword = properties.getProperty(getDatasourceName() + PASSWORD);

;
if (tempDriver == null || tempDriver.length() == 0 ||
tempUrl == null || tempUrl.length() == 0 ||
tempUser == null || tempUser.length() == 0) {

LogUtil.info(DynamicDataSource.class.getName(), "tempDriver [" + tempDriver + "] tempUrl [" + tempUrl + "] tempUser [" + tempUser + "]");
throw new SQLException("No database profile configured");
}

if (tempPassword == null) {
tempPassword = "";
}

if (!getUrl().equals(tempUrl)) {
if (!this.url.equals(tempUrl)) {
//close old datasource
super.close();
super.closed = false;

// set new settings
setDriverClassName(tempDriver);
setUrl(tempUrl);
setUsername(tempUser);
setPassword(tempPassword);
setProperties(properties);
LogUtil.info(getClass().getName(), "profileName=" + HostManager.getCurrentProfile() + ", url=" + getUrl() + ", user=" + getUsername());
this.driverClassName = tempDriver;
this.url = tempUrl;
this.username = tempUser;
this.password = tempPassword;
LogUtil.info(getClass().getName(), "datasourceName=" + getDatasourceName() + ", url=" + url + ", user=" + username);
}
return super.getConnection();
return super.createDataSource();
}

protected void setProperties(Properties properties) {
for (Map.Entry<Object, Object> e : properties.entrySet()) {
String key = (String) e.getKey();
String value = (String) e.getValue();

if (key.endsWith(DRIVER) || key.endsWith(URL) || key.endsWith(USER) || key.endsWith(PASSWORD) || key.endsWith("profileName") || key.endsWith("encryption")) {
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ protected static void createDefaultProfile() {

writeProperty("workflowUser", "root");
writeProperty("workflowPassword", "");
writeProperty("workflowDriver", "com.mysql.jdbc.Driver");
writeProperty("workflowDriver", "com.mysql.cj.jdbc.Driver");
writeProperty("workflowUrl", "jdbc:mysql://localhost:3306/jwdb?characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true");
writeProperty("profileName", "");
} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.net.URLDecoder;
import java.text.Normalizer;
import java.util.List;
import java.util.Random;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.owasp.csrfguard.CsrfGuard;
Expand Down Expand Up @@ -338,4 +339,31 @@ public static String normalizedFileName(String filename) {
}
return normalizedFileName;
}

/**
* @param targetStringLength expected result characters length
* @param lower includes lower case characters
* @param upper includes upper case characters
* @param numeric includes numeric characters
* @param space includes space character
* @param special includes special characters
* @return
*/
public static String generateRandomString(int targetStringLength, boolean lower, boolean upper, boolean numeric, boolean space, boolean special) {
int leftLimit = 32; // letter <space>
int rightLimit = 126; // letter '~'
Random random = new Random();

String generatedString = random.ints(leftLimit, rightLimit + 1)
.filter(i -> (lower && 97 <= i && i <= 122)
|| (upper && 65 <= i && i <= 90)
|| (numeric && 48 <= i && i <= 57)
|| (space && i == 32)
|| (special && (33 <= i && i <= 47 || 58 <= i && i <= 64 || 91 <= i && i <= 96 || 123 <= i && i <= 126)))
.limit(targetStringLength)
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();

return generatedString;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void delete(Object obj) {
super.delete(ENTITY_NAME, obj);
}

public Object find(String id) {
public Object load(String id) {
return super.find(ENTITY_NAME, id);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ public class SetupManager {
public static final String SYSTEM_PROPERTY_WFLOW_HOME = "wflow.home";
public static final String SYSTEM_PROPERTY_WFLOW_SECURE = "wflow.secure";
public static final String DIRECTORY_PROFILES = "app_profiles";
public static final String MASTER_LOGIN_USERNAME = "masterLoginUsername";
public static final String MASTER_LOGIN_PASSWORD = "masterLoginPassword";
public final static String PROPERTY_SETUP_SECURITY_SALT = "securitySalt";
public final static String PROPERTY_SETUP_SECURITY_KEY = "securityKey";

public static final String SMTP_PASSWORD = "smtpPassword";
public static final String SECURE_VALUE = "****SECURE VALUE*****";

Expand Down
Loading